研究文章
优化数据传输基于OpenCL事件管理机制
清单5
OpenCL的代码扩展host-to-device沟通。
| ()cl_context ctx; |
| ()MPI_Request点播; |
| ()cl_event evt(2); |
| () |
| ()如果(等级= = 0){ |
| ()/ *从远程设备接收数据* / |
| ()MPI_Irecv(recvbuf、bufsz MPI_CL_MEM1 0,MPI_COMM_WORLD,&要求的事情); |
| ()/ *创建一个事件对象MPI_Irecv * / |
| ()evt(0]= clCreateEventFromMPIRequest(ctx、点播、NULL); |
| ()/ *执行内核数据传输期间* / |
| ()clEnqueueNDRangeKernel(…,evt(1); |
| () |
| ()/ * * /后执行此计算和沟通 |
| ()clEnqueueWriteBuffer (cmd,但,…2 evt,空); |
| ()} |
| ()else if (排名= =1){ |
| ()/ *将数据发送给远程主机* / |
| ()clEnqueueSendBuffer (bufsz cmd,但CL_TRUE 0, 0,…); |
| ()} |
|