等待 OpenCL 内核终止,但仅在一段时间内



要等待主机端的内核终止,我可以这样做:

error = clEnqueueNDRangeKernel(..., &event);
CHECK_ERROR(error);
clWaitForEvents(1, &event);

但是有没有办法精确到一些最长的等待时间呢?也就是说,如果我的内核在 10 秒后没有完成,我想继续,但如果只需要一秒钟的执行,我不想等待剩余的 9 秒。

无法

只等待给定的时间,但是您可以:

  • 通过clGetEventInfo()和循环检查事件是否每 N 秒完成一次。
  • 使用 clSetEventCallback() 定义事件完成时将调用的函数。使当前线程休眠 10 秒,如果线程完成时间快于 10 秒,则使事件回调唤醒线程。

最新更新