Интерпретация анализа рабочей нагрузки в Nsight Compute - PullRequest
1 голос
/ 24 апреля 2020

Compute Workload Analysis отображает использование различных вычислительных конвейеров. Я знаю, что в современном графическом процессоре целочисленные конвейеры и конвейеры с плавающей запятой являются различными аппаратными единицами и могут выполняться параллельно. Однако не очень понятно, какой конвейер представляет какой аппаратный блок для других конвейеров. Я также не смог найти в Интернете никакой документации о сокращениях и интерпретациях трубопроводов.

Мои вопросы:

1) Каковы полные имена ADU, CBU, TEX, XU ? Как они сопоставляются с аппаратным обеспечением?

2) Какой из конвейеров использует один и тот же аппаратный модуль (например, FP16, FMA, FP64 использует модуль с плавающей запятой)?

3) Планировщик деформации в современный графический процессор может планировать 2 инструкции за цикл (используя разные конвейеры). Какие конвейеры можно использовать одновременно (например, FMA-ALU, FMA-SFU, ALU-Tensor и др. c.)?

Ps: я добавляю скриншот для тех, кто не знаком с Nsight Compute. enter image description here

1 Ответ

4 голосов
/ 25 апреля 2020

SM Volta (CC 7.0) и Turing (CC 7.5) состоит из 4 подразделов (SMSP). Каждый подраздел содержит

  • планировщик деформаций
  • файл реестра
  • кэш постоянной константы
  • единицы выполнения
    • ALU, FMA , FP16, UDP (7.5+) и XU
    • FP64 в вычислительных центрах c детали (GV100)
    • Тензорные единицы

Содержит несколько других разделов, которые содержат исполнительные блоки и ресурсы, совместно используемые 4 подразделами, включая

  • кэш инструкций
  • кэш констант индекса
  • кэш данных L1, который разбивается на размеченную оперативную память и разделяемую память
  • исполнительные блоки
    • ADU, LSU, TEX
    • В невычисленных частях FP64 и Tensor могут быть реализованы как общая исполнительная единица

В Вольте (CC7.0, 7.2) и Тьюринге (CC7.5) каждый подраздел SM может выдавать 1 инструкцию за цикл. Инструкция может быть выдана локальному исполнительному блоку или общим исполнительным блокам SM.

  • ADU - Блок расхождения адресов. ADU отвечает за обработку расхождений адресов потоков для ветвей / переходов и индексированных постоянных нагрузок перед отправкой инструкций другим исполнительным блокам.
  • ALU - Arithmeti c Logi c Unit , ALU отвечает за выполнение большинства целочисленных инструкций, инструкций по обработке битов и инструкций logi c.
  • CBU - блок сходимости барьера. CBU отвечает за инструкции по барьеру, сходимости и ветвлению.
  • FMA - Модуль умножения и накопления с плавающей запятой. FMA отвечает за большинство инструкций FP32, целочисленное умножение и накопление инструкций и произведение целочисленных точек.
  • FP16 - Парное устройство с плавающей запятой с половинной точностью. Блок FP16 отвечает за выполнение парных инструкций с плавающей запятой половинной точности.
  • FP64 - Блок с плавающей запятой двойной точности. Блок FP64 отвечает за все инструкции FP64. FP64 часто реализуется как несколько разных каналов на графических процессорах NVIDIA. Пропускная способность сильно зависит от чипа.
  • LSU - Load Store Unit. LSU отвечает за загрузку, хранение и распределение c инструкций для глобальной, локальной и разделяемой памяти.
  • Тензор (FP16) - Матрица с плавающей запятой с половинной точностью умножается и накапливается .
  • Тензор (INT) - Единица умножения и накопления целочисленной матрицы.
  • TEX - Единица текстуры. Единица текстуры отвечает за выборку, загрузку и фильтрацию инструкций для текстур и поверхностей.
  • UDP (Uniform) - Uniform Data Path - Скалярный модуль, используемый для выполнения инструкций, где ввод и вывод идентичен для всех потоков в деформации.
  • XU - Единица трансцендентного преобразования и преобразования данных - XU отвечает за специальные функции, такие как sin, cos и обратный квадрат root: а также преобразования типов данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...