clEnqueueNDRangeKernel函数

时间:2013-01-21 05:10:19

标签: opencl

如果我理解错误,请纠正我。

err= clEnqueueNDRangeKernel(command_queue,kernel,1,NULL,global,wg,0,NULL,&gpuExec);

CPU代码(写在这两个函数之间)是否同时在CPU上执行,当内核在GPU上执行时....意味着它们同时执行 吗

err=clEnqueueReadBuffer(command_queue,output,CL_TRUE,0,sizeof(cl_int)*100,results,0,NULL,NULL);

2)此功能

err= clEnqueueNDRangeKernel(command_queue,kernel,1,NULL,global,wg,0,NULL,&gpuExec);

立即返回并且CPU可以在此函数调用之后执行另一项工作(意味着在内核开始在不同内核上的GPU上执行)并且在内核执行的同时,CPU可以执行其他工作吗?

1 个答案:

答案 0 :(得分:0)

您的两个问题都可以通过来回答。内核在GPU上异步执行,因此您可以同时在CPU上执行其他工作。您可以使用gpuExec明确等待clWaitForEvents(1, &gpuExec)事件。