Рабочие группы не обязательно должны быть трехмерными, если ваше приложение/алгоритм не требует этого. Вы можете указать 1, 2 или 3 измерения - и, несомненно, больше в будущем. Поэтому используйте меньшие размеры, когда, естественно, подходит для вашего приложения.
Итак, почему спецификация позволит увеличить размеры? Как вы указали, более высокие размеры можно эмулировать с использованием одного измерения. Одним из примеров может быть трехмерное моделирование N-Body для физико-молекулярного моделирования.
Одним из огромных преимуществ использования трехмерных рабочих групп является снижение сложности кода с помощью честного бита. Под капотом SDK, на котором вы запускаете openCL, может выполнять эмуляцию для вас.
Что касается увеличения производительности 2x в вашем примере: это повышение было результатом гораздо лучшего шаблона доступа к памяти, а не аппаратного обеспечения, которое по своей природе было ужасным при работе в 2D рабочей группе. Ответ на этот вопрос объясняет способы дальнейшей оптимизации ядра, которые являются отличными стратегиями для сегодняшнего оборудования gpu.
Более тонкое преимущество использования трехмерных рабочих групп заключается в том, что будущему оборудованию может не понадобиться эмулировать дополнительные размеры. Возможно, память, процессор и т. Д. Будут адаптированы к трехмерным рабочим группам и уменьшат или устраняют штраф за неудачные шаблоны доступа к памяти. Если вы пишете свой код с помощью 1D-групп, вы упустите потенциальное повышение производительности на этих платформах. Даже сегодня можно создавать чипы FPGA/ASIC для работы с 3D рабочими группами лучше, чем графические процессоры.
TL; DR - 3-мерные рабочие группы - это исключительно удобная функция. –