Я не понимаю цели Рабочих групп в OpenCL.
Я понимаю, что это группа рабочих элементов (предположительно, аппаратных потоков), которые выполняются параллельно.
Однако почему существует необходимость в более грубом подразделении? Разве не было бы хорошо иметь только сетку нитей (и, де-факто, только один W-G)?
Если рабочая группа точно соответствует физическому ядру? Например, для карты TESLA c1060 установлено 240 ядер. Как будут отображены рабочие группы?
Кроме того, насколько я понимаю, рабочие элементы внутри рабочей группы могут быть синхронизированы благодаря заборам памяти. Могут ли рабочие группы синхронизировать или даже нужны? Они разговаривают друг с другом через разделяемую память или это только для рабочих элементов (не уверен в этом)?