如果我理解错误,请纠正我。
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可以执行其他工作吗?
答案 0 :(得分:0)
您的两个问题都可以通过是来回答。内核在GPU上异步执行,因此您可以同时在CPU上执行其他工作。您可以使用gpuExec
明确等待clWaitForEvents(1, &gpuExec)
事件。