【问题标题】:OpenCL: Returning std::future instead of blocking with clFinishOpenCL:返回 std::future 而不是用 clFinish 阻塞
【发布时间】:2015-09-17 20:03:16
【问题描述】:

我是 OpenCL 的新手,但有件事让我很恼火,目前我用 clFlush 结束每个 OpenCL 函数,这符合标准阻塞。有没有办法通过返回std::future 或手写my::craft::future 来实现异步处理,只允许在必要时等待?

【问题讨论】:

  • 目前我用 clFlush 结束每个 OpenCL 函数,这是根据标准阻塞。然后再读clFlush,因为你错了。

标签: c++ asynchronous opencl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    相关资源
    最近更新 更多