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

时间:2018-03-20 14:05:22

标签: opencl

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

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

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

1 个答案:

答案 0 :(得分:0)

没有办法只等待一段时间,但你可以:

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