EnqueueNDRange последовательность ядра - PullRequest
0 голосов
/ 22 марта 2012

Если я вызову EnqueueNDRange с максимальным размером локальной группы и большим глобальным размером группы, могу ли я быть уверен, что ядра локальной группы будут выполняться по порядку?

, т. Е.

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Нет гарантии, что рабочие элементы в пределах одной группы будут работать по порядку.Вот почему вам нужно использовать барьер для синхронизации группы в важных точках ядра.Различия в оборудовании GPU между картами делают довольно очевидным, почему элементы могут работать не по порядку.Даже то, как вы обращаетесь к памяти, может означать, что рабочие элементы редко синхронизируются - даже для конкретного процессора, для которого вы оптимизируете.

0 голосов
/ 22 марта 2012

AFAIK Параметр arguments global_work_size указывает количество рабочих элементов в каждом измерении NDRange, а local_work_size указывает количество рабочих элементов в каждом измерении рабочей группы.

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

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