0

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

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 可以做另一项工作吗?

4

1 回答 1

0

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

于 2013-01-21T07:33:09.177 回答