L1 кеш в GPU - PullRequest
       18

L1 кеш в GPU

0 голосов
/ 18 апреля 2019

Я вижу некоторые похожие термины при чтении иерархии памяти графических процессоров, и, поскольку в прошлых версиях были некоторые архитектурные изменения, я не знаю, могут ли они использоваться вместе или имеют разные значения.Устройство M2000, которое совместимо с вычислениями. 5.2.

Верхний уровень (ближайший к конвейеру) представляет собой унифицированный кэш L1 / texture , который составляет 24 КБ на SM.Является ли унифицированным для инструкций и данных?

Ниже этого кеша L2 , который также известен как общая память, которая используется совместновсе SM в соответствии с ./deviceQuery, размер L2 составляет 768 КБ.Если это совокупное значение, то каждый SM имеет 768 КБ / 6 = 128 КБ.Однако согласно руководству по программированию общая память составляет 96 КБ.

Что такое постоянная память тогда и где она находится?Информации о его размере нет ни в метрике deviceQuery, ни в nvprof.Руководство по программированию гласит:

Существует также два дополнительных пространства памяти только для чтения, доступных для всех потоков: пространство памяти констант и текстур.Глобальные, постоянные и текстурные области памяти оптимизированы для различных видов использования памяти (см. Доступ к памяти устройства).Память текстур также предлагает различные режимы адресации, а также фильтрацию данных для некоторых конкретных форматов данных (см. Текстура и Поверхностная память).

Глобальная, постоянная и текстурная памяти сохраняются при запуске ядра одним и тем жеприложение.

Ниже L2 находится глобальная память, известная как устройство память, которая может быть 2 ГБ, 4 ГБ и ...

1 Ответ

6 голосов
/ 18 апреля 2019

Архитектура графического процессора NVIDIA имеет следующие пути доступа.Графический процессор может иметь дополнительные кэши в иерархии, представленной ниже.

  • Путь для глобальной локальной памяти
    • (CC3. *) L1 -> L2
    • (CC5. -6. ) L1TEX -> L2
    • (CC7. *) L1TEX (LSU) -> L2
  • Путь для поверхности, текстура (CC5. / 6. )
    • (CC <5) TEX </li>
    • (CC5. -6. ) L1TEX -> L2
    • (CC7. *) L1TEX (TEX) -> L2
  • Путь для общего
    • (CC3. *) L1
    • (CC5. -6. ) SharedMemory
    • (CC7. *) L1TEX (LSU)
  • Путь для немедленной константы
    • ... c [банк] [смещение] -> IMC - кэш немедленной константы -> кэш L2
  • Путь для индексированной константы
    • LDC Rd, c [банк] [смещение] -> IDC - Индексированный кэш констант -> Кэш L2
  • Путь для инструкции
    • ICC - Кэш инструкций -> L2

Профилировщики NVIDIA CUDA (Nsight Compute, Nvidia Visual Profiler и Nsight VSE CUDA Profiler) имеют высокоуровневые диаграммы иерархии памяти, чтобы помочь вам понять, как логические запросы отображаются на оборудование.

CC3. * Иерархия памяти enter image description here

Для CC5. / 6. существует два унифицированных кэша L1TEX на SM.Каждый блок L1 / TEX обслуживает 1 SM-раздел.Каждый раздел SM имеет два подраздела (2 планировщика деформации).SM содержит отдельное ОЗУ и путь к данным для разделяемой памяти.Модуль L1TEX не обслуживает ни выборки команд, ни постоянную загрузку данных (через c [bank] [offset]).Выборки команд и постоянные загрузки обрабатываются через отдельные иерархии кеша (см. Выше).Модель программирования CUDA также поддерживает доступ к данным только для чтения (const) через L1TEX через глобальное адресное пространство памяти.

Кэш L2 совместно используется всеми движками в GPU, включая, помимо прочего, SM, механизмы копирования, видеодекодеры, видеокодеры и контроллеры дисплея.Кэш L2 не разделен клиентом.L2 не называется общей памятью.В NVIDIA GPU разделяемая память - это локальная память для SM, которая поддерживает эффективный нелинейный доступ.

Глобальная память - это адрес виртуальной памяти, который может включать:

  • выделенную память намикросхема, называемая памятью устройства, видеопамятью или кадровым буфером, в зависимости от контекста.
  • закрепленная системная память
  • не закрепленная системная память через объединенную виртуальную память
  • одноранговая память
...