Группа потоков - это группа потоков, которые работают вместе для решения определенной (под) проблемы. Вы можете иметь максимум 512
или 1024
потоков в группе потоков (в зависимости от используемого устройства).
threadExecutionWidth
- размер используемых групп SIMD. Обычно это 32
, то есть каждая SIMD-группа содержит 32
потоков. Для оптимальной производительности число потоков в вашей группе потоков должно быть кратным threadExecutionWidth
. (Это действительно то, что другие называют волновым фронтом или деформацией.)
Если у вас есть изображение 1024x1024
и вы хотите, чтобы один поток обрабатывал один пиксель, а максимальный размер группы потоков равен 512
, то вы можете создать сетку из 1024x1024
потоков, которая состоит из 32x64
групп потоков из размер 32x16
(т.е. 512
).
Но на самом деле вы можете разделять потоки так, как вы хотите. Вы также можете иметь сетку из 2x1024
групп нитей размером 512x1
или чего угодно.