Количество волновых фронтов, которые могут поместиться на SIMD

Я читаю статью о графическом процессоре AMD и меня смущает конкретный пример. Учитывая модуль SIMD с количеством регистров, сколько волновых фронтов может занимать SIMD, если для них требуется x количество регистров?

В частности, если блок SIMD имеет 16 КБ регистров, которые можно разделить между 1-32 волновыми фронтами. Тогда это означает, что каждый волновой фронт может иметь в среднем 8 регистров (если имеется 32 волновых фронта). Это хорошо.

Затем далее говорится, что существует глобальное ограничение на количество волновых фронтов на SIMD ~ 20,6, что дает каждому волновому фронту 11-12 регистров.

Эта часть затем смущает меня. Далее говорится, что только 2 волновых фронта могут занимать SIMD, если они используют 83 или более регистров. (напоминая, что волновые фронты имеют ширину 64).

По моим подсчетам: 2 * 83 * 64 = 10628 registers, что намного меньше 16 384 на SIMD. Таким образом, у вас может быть 3 волновых фронта без проблем.

Я читаю статью здесь, если я что-то пропустил . (7-й абзац)


person Roger    schedule 08.05.2011    source источник


Ответы (1)


Относительно глобального лимита:

Каждый из AMD GPU имеет глобальный предел количества одновременных волновых фронтов, которые он может поддерживать. Этот предел зависит от модели, но обычно не меняется между версиями одного и того же чипа с разной нарезкой. Например, для чипов Cypress (5830, 5850, 5870) это 496 волновых фронтов на GPU. Поскольку эти чипы имеют разное количество CU, максимальное количество волновых фронтов/CU (рассчитанное с помощью этого ограничения) снижается с 35,4 для 5830 до 24,8 для 5870. Для чипов начального уровня этот глобальный предел может составлять до 96 волновых фронтов/CU. КР. В этих случаях применяется ограничение в 32 волновых фронта/CU (8 рабочих групп на 4 волновых фронта) с 8 регистрами/потоком.

Теперь о двух волновых фронтах:

Судя по числам, приведенным в ATI Stream Programming Guide OpenCL, кажется, что количество используемых регистров немного меньше, чем 16384, поэтому я предполагаю (как в чистом виде, не нашел никакой информации об этом), что некоторые регистры используются для другие цели, недоступные ядру напрямую (указатели инструкций и прочее). В приведенной таблице никакое распределение не использует более 15872 регистров, так что это может быть максимально используемым. Конечно, это чистое предположение, так что это может быть просто случай, когда кто-то использовал неправильные цифры в руководстве, и все его копировали.

В целом Руководство по программированию ATI Stream OpenCL является хорошим источником информации об OpenCL. Имейте в виду, что ссылка является результатом быстрого поиска в Google и, похоже, не указывает на самую последнюю версию (она указывает на версию 1.03, в то время как я использую версию 1.05, и я понятия не имею, является ли это самый актуальный). Не знаю, имеет ли это какое-то важное значение, но может потребоваться более глубокий поиск.

person Grizzly    schedule 16.05.2011