АМД фронта и рабочей группы
Я немного запутался в терминах волнового фронта AMD и workgroupsize OpenCL. Я нашел разные источники, были разные заявления сделаны.
Мой вопрос: насколько велик размер волнового фронта технологии AMDs GCN и в соответствии с этим: насколько большой должна быть рабочая группа по opencl, чтобы не тратить время впустую.
Информация, которую я получил изэтого документа amd, состоит в том, что размер волнового фронта GCN равен 16. Я могу запустить 4 волновых фронта на CU одновременно, и есть максимум 40 волновых фронтов в полете на куб. таким образом, я подразумеваю, что рабочая группа должна быть по крайней мере размером 16 в opencl.
Но общая информация (например, в this или this) заключается в том, что wavefrontsize равен 64 и в соответствии с этим workgroupsize должен быть по крайней мере 64, если выше кратного 64. Это также совпадает с meassurements на моем ядре, которые состоят в том, что с workgroupsize 64 я получаю самую высокую производительность, для всего, что ниже 64 его стать хуже.
Большое спасибо за разъяснение.
1 ответ:
Ты все неправильно понял. Прочитайте этот документ еще раз внимательно. Блок SIMD имеет 16 рабочих элементов, а размер волнового фронта-64 рабочих элемента. Вот важные цитаты:
Страница 3:
В GCN каждый CU включает 4 отдельных блока SIMD для векторной обработки. Каждый из этих блоков SIMD одновременно выполняет одну операцию через 16 рабочих мест элементы, но каждый из них может работать на отдельном волновом фронте.
Страница 5:
Это существенно для поток управления волновым фронтом; например, сравнение будет генерировать результат для каждого из 64 рабочих элементов в волновом фронте.