我是OpenCL的新手,但是有一个让我感到烦恼的事情,此刻,我用clFlush结束了每个OpenCL函数,这是根据标准阻塞进行的。有没有一种方法可以使事情与返回std::future异步或编写手写的my::craft::future,仅在必要时等待?

最佳答案

clFlush不会阻止,clFinish会阻止。
“clFlush仅保证将所有排队到command_queue的命令最终提交给适当的设备,不能保证在clFlush返回后它们将完成。” https://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clFlush.html

完成某些操作后,可以使用clSetEventCallback调用函数。
https://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clSetEventCallback.html

10-07 12:03