Почему в SM GPU есть два планировщика деформации?
Я читаю технический документ NVIDIA Fermi и запутываюсь, когда подсчитываю количество ядер SP, планировщиков.
Согласно техническому документу, в каждом SM имеется два планировщика деформации и два блока отправки команд, что позволяет одновременно выполнять и выводить два деформации. В SM имеется 32 ядра SP, каждое ядро имеет полностью конвейеризованные ALU и FPU, которые используются для выполнения инструкции потока
Как мы все знаем, деформация состоит из 32 потоков, если мы просто запускаем деформацию каждый цикл, это означает, что все потоки в этой деформации будут занимать все ядра SP и завершат выполнение за один цикл (предположим, что никакого останова нет).).
Тем не менее, NVIDIA разрабатывает двойной планировщик, который выбирает два искажения и выдает одну инструкцию от каждого искажения для группы из шестнадцати ядер, шестнадцати модулей загрузки / хранения или четырех SFU.
NVIDIA считает, что этот дизайн приведет к максимальной производительности оборудования. Возможно, пиковая производительность оборудования достигается за счет чередования выполнения различных команд с использованием всех преимуществ аппаратных ресурсов.
Мои вопросы следующие (предположим, что нет памяти и все операнды доступны):
Требуется ли для каждой деформации два цикла для завершения выполнения, и все 32 ядра SP разделены на две группы для каждого планировщика деформации?
единицы ld/st и SFU являются общими для всех варпов (похоже на униформу для варпов от двойных планировщиков)?
если деформация делится на две части, какая часть запланирована первой? есть ли планировщик? или просто случайным образом выбирает одну часть для выполнения.
в чем преимущество этого дизайна? просто максимизировать использование оборудования?
1 ответ
Требуется ли для каждой деформации два цикла для завершения выполнения, и все 32 ядра SP разделены на две группы для каждого планировщика деформации?
Да. Fermi, в отличие от будущих поколений, имеет "горячие часы" (шейдерные часы), которые работают в 2 раза быстрее "основных" часов. Каждая инструкция с плавающей запятой одинарной точности (например) выдает более 2 "горячих часов", но для одной и той же группы из 16 ядер SP. Чистый эффект - одна проблема на "основные" часы на планировщик.
единицы ld/st и SFU являются общими для всех варпов (похоже на униформу для варпов от двойных планировщиков)?
Не очень понимаю вопрос. Все ресурсы выполнения являются общими / доступными для инструкций, поступающих из любого планировщика.
если деформация делится на две части, какая часть запланирована первой? есть ли планировщик? или просто случайным образом выбирает одну часть для выполнения.
Почему это важно? Машина ведет себя так, как будто две полные инструкции деформации запланированы в одном такте ядра, то есть "двойной выпуск". В любом случае, вы не видите ничего, что происходит на уровне горячих часов.
в чем преимущество этого дизайна? просто максимизировать использование оборудования?
Да, как указано в официальном документе Fermi:
"Используя эту элегантную модель двойного выпуска, Fermi достигает почти максимальной производительности оборудования".