研究文章
优化数据传输基于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_new…0,NULL,急症室(0]); |
| ()clEnqueueSendrecvBuffer (cmd2 p_old,…0,NULL,急症室(1); |
| ()jacobi_kernel_even_B(cmd2 p_new…1,&e (1)空); |
| ()clEnqueueSendrecvBuffer (cmd1 p_new,…1,&e (0),零); |
| ()} |
| ()其他的{ |
| ()jacobi_kernel_odd_B (cmd2 p_new…0,NULL,急症室(0]); |
| ()clEnqueueSendrecvBuffer (cmd1 p_old,…0,空,进(1); |
| ()晶澳cobi_kernel_odd_A (cmd1p_new…1,进1)空); |
| ()clEnqueueSendrecvBuffer (cmd2 p_new,…1,&e (0),零); |
| ()} |
| ()clFinish (cmd1); clFinish (cmd2); |
| ()* / / *误差计算 |
| ()} |
|