У меня нет учебника по событиям в OpenCL, и я ни в коем случае не эксперт, но так как никто больше не отвечает ...
Как правило, вынужно подождать любую функцию с именем clEnqueue*
.Эти функции возвращаются непосредственно перед выполнением работы.Самый простой способ убедиться, что ваша очередь закончена, это позвонить по номеру clFinish()
.Он не вернется, пока вся очередь не будет завершена.
Если вы хотите немного поумнеть, большинство функций clEnqueue*
имеют необязательный параметр cl_event
, который можно передать.для определенного события с помощью clGetEventInfo()
, и вы можете дождаться окончания определенного набора событий с clWaitForEvents()
.