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



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



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



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

330   1  

1 ответ:

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

Comments

    Ничего не найдено.