在调用clFinish或clWaitForEvents之前,OpenCL内核执行不会启动

Tom*_*mas 6 c++ opencl

我试图在GPU上运行内核并在主机(CPU)上进行额外的计算.我看到这个效果:

只有内核需要大约2000毫秒:

clEnqueueNDRangeKernel ...

clFinish(或clWaitForEvents,我试过两个)

我在睡眠模拟CPU上模拟了额外的计算(10):

clEnqueueNDRangeKernel ...

睡眠(10);

clFinish(或clWaitForEvents)

从理论上讲,内核应该在GPU上运行,在10秒休眠后内核应该完成.但是时间测量说这一切都需要12000ms而不是10000.

clFinish或clWaitForEvents是否会调用内核启动或者我错过了什么?

我正在使用AMD Fusion CPU/GPU和Linux.

非常感谢.

use*_*136 6

尝试调用clFlush之后clEnqueueNDRangeKernel:

CLFLUSH

将命令队列中所有先前排队的OpenCL命令发布到与命令队列关联的设备.

http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/clFlush.html