Почему заполняемость CUDA определяется с точки зрения количества активных искривлений над максимальными поддерживаемыми искривлениями

заполняемость определяется как количество активных искривлений по количеству максимальных искривлений, поддерживаемых одним потоковым Мультипроцессором. Скажем у меня 4 блоков, работающих на один см, каждый блок имеет 320 потоков, т. е. 10 коробит, так коробит 40 на один SM. Заполняемость 40/48, предполагая, что максимальные деформации на одном см 48 (CC 2.икс.)

но в общей сложности у меня 320 * 4 потоков, работающих на одном SM, и есть только 48 ядер CUDA на одном SM. Почему заполняемость не 100%? Я использую все CUDA сердце...

Я уверен, что что-то упускаю...

1 ответов


потому что занятие не имеет ничего общего с ядрами. CUDA-это конвейерная архитектура стиля SIMD. Ваши 48 ядер питаются per warp инструкции от трубопровода (двойной выдан, на самом деле). Вам нужно много искривлений, чтобы сохранить конвейер инструкций полным, иначе все ядра остановятся. Вот почему заполняемость является несколько полезным показателем для количественной оценки способности данного ядра обеспечить достаточную параллельную работу для достижения разумной производительности.