研究文章

优化数据传输基于OpenCL事件管理机制

清单4

Himeno基准代码与该OpenCL扩展。
( )cl_command_queue cmd1, cmd2;
( )cl_mem p_new、p_old p_tmp;
( )cl_event e [2);
( )
( )(int(0);我< N;+ + i){
( )p_tmp = p_new;p_new = p_old;p_old = p_tmp;
( )如果(等级% 2 = = 0){
( )jacobi_kernel_even_A (cmd1 p_new0,NULL,急症室(0]);
( )clEnqueueSendrecvBuffer (cmd2 p_old,0,NULL,急症室(1);
( )jacobi_kernel_even_B(cmd2 p_new1,&e (1)空);
( )clEnqueueSendrecvBuffer (cmd1 p_new,1,&e (0),零);
( )}
( )其他的{
( )jacobi_kernel_odd_B (cmd2 p_new0,NULL,急症室(0]);
( )clEnqueueSendrecvBuffer (cmd1 p_old,0,空,进(1);
( )晶澳cobi_kernel_odd_A (cmd1p_new1,进1)空);
( )clEnqueueSendrecvBuffer (cmd2 p_new,1,&e (0),零);
( )}
( )clFinish (cmd1); clFinish (cmd2);
( )* / / *误差计算
( )}