Что clEnqueueMarkerWithWaitList делает, что параметры функций cl не могут? - PullRequest
0 голосов
/ 04 мая 2019

Предположим, у меня есть набор ядер, которые я хочу запустить асинхронно с некоторыми зависимостями между ними.

Один из вариантов синхронизации: clEnqueueMarkerWithWaitList . В спецификации говорится, что это

Включает команду маркера, которая ожидает либо список событий для complete [...] Эта команда возвращает событие, которого можно ожидать, то есть этого события можно ожидать, чтобы убедиться, что все события либо в event_wait_list, либо во всех ранее помещенных в очередь командах, поставленных в очередь перед этой командой в command_queue, завершены.

С другой стороны, я мог бы также ставить ядра в очередь непосредственно с помощью clEnqueueNDRangeKernel . Это имеет следующие параметры:

event_wait_list и num_events_in_wait_list

Укажите события, которые необходимо завершить, прежде чем эта конкретная команда может быть выполнена. [...] События, указанные в event_wait_list, действуют как точки синхронизации.

Насколько я видел, все функции cl имеют эти параметры. Так в чем же смысл clEnqueueMarkerWithWaitList? Единственное, что я могу придумать, основываясь на описании на веб-сайте, это то, что я могу ждать результирующего события команды маркера вместо всех событий в списке, но это кажется лишь небольшим удобством во время программирования (если даже это ) и ничего, что могло бы иметь значение.

Есть ли какая-то тонкая разница между двумя, которые мне не хватает? Обратите внимание, что этот вопрос сравнивается только с clWaitForEvents.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...