Как известно, AMD-OpenCL поддерживает WAVEFRONT (август 2015): http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_OpenCL_Programming_Optimization_Guide2.pdfПоддерживает ли официальный стандарт OpenCL 2.2 поддержку WaveFront?
Процессор AMD Radeon HD 7770 GPU, например, поддерживает более 25000 в полете рабочие-детали и может переключаться на новую волновой фронт (содержащий до 64 рабочих элементов) за один цикл.
Но почему в стандартах OpenCL 1,0/2,0/2,2 нет никакого упоминания о WAVEFRONT?
Ни один из PDF не имеет ни слова WaveFront: https://www.khronos.org/registry/OpenCL/specs/
Также я обнаружил, что:
OpenCL является открытым стандартом. Он по-прежнему не поддерживает эту концепцию . Он даже не поддерживает wavefront/warp.
Вот почему понятие не на самой спецификации OpenCL.
- 2011: https://forums.khronos.org/showthread.php/7211-How-can-i-split-my-work-load-in-a-GPU-with-OpenCL
Стандарт OpenCL не имеет понятие "волнового фронта"
Действительно, официальный стандарт OpenCL 2.2 по-прежнему не поддерживает WaveFront?
ЗАКЛЮЧЕНИЕ:
Там нет WaveFront в OpenCL стандарт, но в OpenCL-2.0 есть Подгруппы с SIMD исполнения модели сродни фронты.
- страница-100:http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_OpenCL_Programming_User_Guide2.pdf
6.4.2 Функции Рабочая группа/подгруппа уровня
OpenCL 2.0 вводит расширение подгруппу в Хронос . Подгруппы представляют собой логическую абстракцию аппаратной SIMD-модели выполнения, аналогичную волновым фронтам, искажениям или векторам и разрешать программирование ближе к оборудованию независимо от поставщика. Это расширение включает в себя набор встроенных функций кросс-подгруппы, которые соответствуют набору встроенных функций кросс-группы , указанных выше.
Спасибо! Но что это значит и какая проблема может быть: «Чрезмерная забота должна выполняться при написании кода, который использует подгруппы, если цель состоит в том, чтобы писать переносные приложения OpenCL»? Как там сказано: '** Подгруппы - это логическая абстракция аппаратной модели выполнения SIMD **, подобной волновым фронтам': page-100: http://amd-dev.wpengine.netdna-cdn.com/wordpress/media /2013/12/AMD_OpenCL_Programming_User_Guide2.pdf – Alex
Если подгруппы являются логической абстракцией аппаратного SIMD, и если во время выполнения я могу получить ширину подгруппы (SIMD) для текущего устройства, используя 'get_sub_group_size()'/'get_max_sub_group_size()', где может возникнуть проблема? page-160: http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_OpenCL_Programming_User_Guide2.pdf – Alex
get_max_sub_group_size: он говорит: «Это значение будет инвариантным для заданного набора параметров отправки и объект ядра, скомпилированный для данного устройства, поэтому он будет работать –