OpenCL: несколько вызовов clEnqueueNDRangeKernel () - PullRequest
1 голос
/ 27 сентября 2011

Я не понимаю, как clEnqueueNDRangeKernel () работает при многократном вызове. Допустим, я ставлю в очередь 10 раз (например, с циклом for), каждый раз с global_work_size = 32. Допустим, ядро ​​принимает глобальный аргумент, который заполняется с помощью get_global_id (0).

Мой вопрос касается перечисления глобальных идентификаторов.

Что я ожидал: Global_id с наибольшим номером будет (10 * 32-1) = 319.

Что на самом деле происходит: Глобальный идентификатор с наибольшим номером (32-1) = 31.

Может кто-нибудь объяснить, как каждый рабочий элемент перечисляется, шаг за шагом, когда выполняется несколько вызовов clEnqueueNDRangeKernel ()?

1 Ответ

5 голосов
/ 27 сентября 2011

Пространство NDRange, создаваемое в каждом вызове clEnqueueNDRAngeKernel, не зависит друг от друга, глобальные идентификаторы рабочих элементов не являются последовательными или вообще не связаны между каждым вызовом.

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