clEnqueueNDRangeKernel
фактически не запускает ядра, а «ставит их в очередь».Реализация OpenCL может свободно запускать ядра, когда сочтет нужным (в данном случае, когда вы просите прочитать результаты, поскольку для получения результатов необходимо запустить ядро).
Однако вы можете принудительно вызватьреализация для запуска ядер через clFinish
.
В вашем случае, задержка в 150 мс - это фактически время, необходимое для запуска ядра.
Если вы вызываете clFinish
между выполнением и вторым чтением, это будет работать.