要等待主机端的内核终止,我可以这样做:
error = clEnqueueNDRangeKernel(..., &event);
CHECK_ERROR(error);
clWaitForEvents(1, &event);
但是有没有办法精确到一些最长的等待时间呢?也就是说,如果我的内核在 10 秒后没有完成,我想继续,但如果只需要一秒钟的执行,我不想等待剩余的 9 秒。
无法
只等待给定的时间,但是您可以:
- 通过
clGetEventInfo()
和循环检查事件是否每 N 秒完成一次。 - 使用
clSetEventCallback()
定义事件完成时将调用的函数。使当前线程休眠 10 秒,如果线程完成时间快于 10 秒,则使事件回调唤醒线程。