我试图在GPU上运行内核并在主机(CPU)上进行额外的计算.我看到这个效果:
只有内核需要大约2000毫秒:
clEnqueueNDRangeKernel ...
clFinish(或clWaitForEvents,我试过两个)
我在睡眠模拟CPU上模拟了额外的计算(10):
clEnqueueNDRangeKernel ...
睡眠(10);
clFinish(或clWaitForEvents)
从理论上讲,内核应该在GPU上运行,在10秒休眠后内核应该完成.但是时间测量说这一切都需要12000ms而不是10000.
clFinish或clWaitForEvents是否会调用内核启动或者我错过了什么?
我正在使用AMD Fusion CPU/GPU和Linux.
非常感谢.
尝试调用clFlush之后clEnqueueNDRangeKernel:
CLFLUSH
将命令队列中所有先前排队的OpenCL命令发布到与命令队列关联的设备.
http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/clFlush.html