要等待主机端的内核终止,我可以这样做:
error = clEnqueueNDRangeKernel(..., &event);
CHECK_ERROR(error);
clWaitForEvents(1, &event);
但有没有办法确定一些最长的等待时间?也就是说,如果我的内核没有完成,比方说,10秒钟我想继续,但如果只需要一秒的执行时间,我不想等待剩余的9秒。
答案 0 :(得分:0)
没有办法只等待一段时间,但你可以:
clGetEventInfo()
和循环检查事件是否每N秒完成一次。clSetEventCallback()
定义事件完成时将调用的函数。将当前线程休眠10秒,并使事件回调唤醒线程,如果它完成的时间超过10秒。