在OpenCL中,我可以使用clSetEventCallback
注册在GPU上完成事件后要调用的回调函数。
但是我在将命令排入队列后才立即得到cl_event
。因此,在CPU上调用clSetEventCallback
时,该事件在GPU上已经完成的可能性很小。
如果在已经完成的事件上调用clSetEventCallback
,OpenCL驱动程序是否仍将调用回调?
答案 0 :(得分:1)
必须为事件对象注册的所有回调。在事件对象被销毁之前,应调用所有排队的回调。回调必须立即返回。在回调中,调用昂贵的系统例程,OpenCL API调用以创建上下文或命令队列或阻止以下列表中的OpenCL操作的行为是不确定的。
这有点含糊,但是我认为即使在调用clSetEventCallback
时事件已经完成,您也可以假定将调用回调。否则会使用户的代码变得不必要。