CUDA Kepler: недостаточно ALU

Согласно белой странице Kepler, размер основы для GPU на основе Kepler равен 32, и каждый мультипроцессор содержит 4 графика деформации, которые выбирают две независимые инструкции из выбранного деформации. Это означает, что каждый тактовый цикл, 32*4*2 = 256 вычислений, должен выполняться, но многопроцессорный процессор содержит только 192 ALU. Как тогда выполняются эти расчеты?

1 ответ

Решение

Фактическая формулировка документа выглядит следующим образом:

SMX планирует потоки в группах из 32 параллельных потоков, называемых перекосами. Каждый SMX оснащен четырьмя планировщиками деформаций и восемью модулями диспетчеризации команд, что позволяет выпускать и выполнять четыре деформации одновременно. Квадратный планировщик деформации Kepler выбирает четыре деформации, и в каждом цикле можно отправлять две независимые инструкции на деформацию.

Интерпретация заключается в том, что в любом данном цикле может быть запланировано не более 4 перекосов. Для каждой из этих 4 варпов может быть отправлено (до) 2 независимых инструкций на варп. "может быть отправлен" не то же самое, что "будет отправлен".

192 ALU, на которые вы ссылаетесь, относятся к арифметическим операциям с плавающей запятой одинарной точности (SP-единицы для целей данного обсуждения). Однако в SM(X) есть и другие функциональные единицы, такие как арифметические единицы с плавающей запятой двойной точности (единицы DP), единицы загрузки / хранения (единицы LD/ST) и другие единицы. Обратитесь к диаграмме на странице 8 технического документа, указанного выше. Если для данного набора инструкций использовались блоки SP, то 8 инструкций не могли быть запланированы, максимум 6 (32x6=192) могли быть запланированы. Однако, если набор команд содержит независимые инструкции разных типов (например, загрузки, хранилища, операции SP и т. Д.), Ограничение в 192 единицы SP не обязательно будет определяющим фактором того, сколько команд фактически запланировано в любом данном цикле.

Суть в том, что 8 инструкций (2 инстанса / планировщик х 4 планировщика) за цикл - это максимально возможная частота выдачи команд на SM(X). Коды реального мира не обязательно достигают этого. Вполне возможно, что в данном цикле не может быть выдано никаких инструкций из-за условий остановки / голодания.

Другие вопросы по тегам