研究文章

优化数据传输基于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,);
( )}