已完成事件的OpenCL回调

时间:2019-01-23 16:40:29

标签: opencl

在OpenCL中,我可以使用clSetEventCallback注册在GPU上完成事件后要调用的回调函数。

但是我在将命令排入队列后才立即得到cl_event。因此,在CPU上调用clSetEventCallback时,该事件在GPU上已经完成的可能性很小。

如果在已经完成的事件上调用clSetEventCallback,OpenCL驱动程序是否仍将调用回调?

1 个答案:

答案 0 :(得分:1)

OpenCL specification说:

  

必须为事件对象注册的所有回调。在事件对象被销毁之前,应调用所有排队的回调。回调必须立即返回。在回调中,调用昂贵的系统例程,OpenCL API调用以创建上下文或命令队列或阻止以下列表中的OpenCL操作的行为是不确定的。

这有点含糊,但是我认为即使在调用clSetEventCallback时事件已经完成,您也可以假定将调用回调。否则会使用户的代码变得不必要。