Что означает "выданная инструкция" в отчете, представленном CUDA nvvp?
Я использую визуальный профилировщик Nvidia (nvvp) для выполнения профилирования ядра на ядре cublas. Эта ссылка Распределение задержек является результатом распределения задержек.
В документе таким образом объясняется термин "инструкция выдана" - "Инструкция выдана - был издан деформация", что меня смущает. Что это на самом деле означает?
1 ответ
Сначала немного истории о модели исполнения CUDA.
Деформация CUDA является основной единицей планирования и выполнения на графическом процессоре CUDA. Деформация - это фиксированная коллекция из 32 потоков, которые выполняются вместе.
Поэтому инструкция, выполняемая одним потоком в деформации, всегда выполняется всеми остальными потоками в деформации (хотя они могут быть предикаты отключены или маскированы как неактивные, игнорируя Вольта для этого обсуждения) в любом заданном тактовом цикле.
Потоковый мультипроцессор CUDA (SM) имеет планировщики, которые просматривают различные потоки выполнения, относящиеся к доступным деформациям, и выбирают инструкции из тех потоков выполнения, которые готовы, чтобы планировать эти инструкции для различных исполнительных блоков в SM.
Выпущенная затем команда означает, что планировщик деформации выбрал инструкцию и выдал ее (запланировал) на набор исполнительных блоков для обработки. Сказать, что "инструкция была выполнена", фактически означает, из-за модели выполнения CUDA, что эта инструкция была выполнена по всей деформации, то есть она была запланирована на 32 соответствующих исполнительных блока, чтобы обслуживать эту инструкцию для всех 32 потоков в деформации. Мы могли бы сказать, что "деформация была выпущена", означая, что инструкция была выполнена для всех 32 потоков в деформации.
Теперь, что касается диаграммы распространения, вы, вероятно, захотите обратиться сюда.
Профилировщик использует выборку с ПК для определения состояния деформации в точках выборки, а затем помещает состояние деформации таким образом в круговую диаграмму распределения, чтобы показать процент времени, когда было выбрано определенное состояние.
Деформация может быть в разных состояниях, я не буду пытаться определить и обобщить их все. Но многие состояния будут соответствовать состоянию "зависания", что означает, что деформация в этом состоянии не может иметь инструкции, выданной из нее (возможно, например, потому что следующие инструкции имеют зависимости выполнения от ранее выпущенных инструкций, которые не были выполнены еще). Состояние "не срыв" - это "инструкция выдана". (Состояния деформации определены здесь. Технически, "не выбран" - это состояние "срыва", но я буду обсуждать это ниже).
"Инструкция издана", вероятно, является "лучшим" состоянием с точки зрения варпа. В тактовом цикле, в котором была произведена выборка деформации, у него была готовая к планированию инструкция, и фактически одна или более инструкций фактически были выпущены из этой деформации.
для сравнения, "не выбрано" (технически также "состояние остановки") - это деформация, которая "готова" к выдаче, но по какой-то причине планировщик деформации решил выбрать инструкцию (и) из другой деформации для выдачи в часы. цикл, который был выбран.