GPU, ускорители и инфраструктура LLM · проверено по источникам

Пропускная способность памяти графического процессора

Пропускная способность памяти GPU — объём данных, переносимый за единицу времени на заданной границе. Паспортный предел интерфейса, физический трафик и эффективный перенос полезных данных программы — связанные, но разные показатели.

Также ищут: GPU memory bandwidth · пропускная способность видеопамяти · bandwidth памяти GPU

Практический смысл

Почему это важно

Пропускную способность без определения объёма данных и времени трудно использовать. Сначала укажите, учитываются ли чтения и записи, где проходят данные и какие кеши участвуют. Затем измерьте завершённую работу на репрезентативном размере: короткий тест из кеша или CPU-таймер без ожидания может отвечать совсем на другой вопрос.

Доказательная часть

Что подтверждено

  1. CUDA Best Practices определяет effective bandwidth через сумму полезных байтов чтения и записи, делённую на время операции. Нужно явно задать границу учёта: число обработанных элементов само по себе не сообщает, сколько байтов программа прочитала и записала.

    Граница применимости: Методика Effective Bandwidth Calculation CUDA 12.6; полезные байты обращений не тождественны фактическому физическому трафику DRAM.

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

    Граница применимости: CUDA 12.6 Best Practices, theoretical versus effective bandwidth; конкретные аппаратные параметры и режимы должны быть установлены отдельно.

  3. В расчёте bandwidth нельзя смешивать биты, байты и разные масштабы единиц. GB — это 10⁹ байт, GiB — 2³⁰ байт; числитель и знаменатель сравниваемых измерений должны использовать одну явно указанную систему.

    Граница применимости: CUDA Best Practices, единицы расчёта bandwidth; перевод единиц не является дополнительной производительностью устройства.

  4. CUDA объединяет обращения потоков к global memory в транзакции по правилам архитектуры. Удобное взаимное расположение адресов помогает уменьшить число транзакций для нужных данных; разбросанные обращения могут переносить больше байтов, чем использует программа.

    Граница применимости: CUDA 12.6 Best Practices, coalesced access to global memory; точные размеры и выравнивание транзакций зависят от устройства.

  5. В повторяемом тесте часть данных может обслуживаться кешами. Effective bandwidth программы тогда не следует автоматически называть скоростью внешней DRAM: для такого вывода нужно учитывать рабочий набор, cache behavior и наблюдаемый уровень памяти.

    Граница применимости: CUDA Best Practices, memory hierarchy и различие requested/actual memory traffic; тест должен указывать, какую границу он измеряет.

  6. Bandwidth и задержка отдельного зависимого доступа — разные свойства. Много независимых обращений могут поддерживать большой суммарный поток данных, хотя одна цепочка, ожидающая каждый предыдущий результат, продолжает чувствовать задержку.

    Граница применимости: Редакторское сопоставление bandwidth measurement и latency hiding в CUDA; не утверждение о фиксированной задержке конкретной GPU.

  7. Для измерения CUDA-операции нужно фиксировать её реальное завершение, например согласованной парой CUDA events с ожиданием конечного события. Одновременно фиксируют объём данных и условия запуска; время вызова со стороны CPU без ожидания не является временем переноса или kernel.

    Граница применимости: CUDA 12.6 Best Practices, timing GPU operations; измеряемая работа находится между выбранными событиями, а посторонняя работа и прогрев учитываются в описании процедуры.

Граница терминов

Не путать

Память графического процессора

Ёмкость VRAM описывает размещение данных, а bandwidth — их перенос за время. Задача может помещаться, но медленно получать данные; высокая скорость памяти не делает произвольное большое выделение памяти допустимым.

Задержка

Задержка описывает время выбранной операции или доступа, bandwidth — суммарный перенос за время. GPU может скрывать часть задержки переключением на другую готовую работу, но это не превращает задержку одной зависимой цепочки в ноль.

Перед спецификацией

Что проверить

  1. Определите, какая граница измеряется: полезные обращения, трафик DRAM или внешний transfer.
  2. Посчитайте байты чтения и записи для одной операции, а не только размер входа.
  3. Укажите GB/s либо GiB/s и используйте те же единицы во всех сравнениях.
  4. Проверьте, как адреса потоков объединяются в транзакции памяти.
  5. Зафиксируйте рабочий набор, прогрев и влияние кешей на повторные проходы.
  6. Измеряйте завершённую работу GPU с корректными событиями или синхронизацией.
  7. Повторите замер на размерах и рисунке обращений целевой задачи.
Открытые основания

Первоисточники

  • Официальная документация

    CUDA C++ Best Practices Guide

    NVIDIA · CUDA C++ Best Practices Guide, CUDA 12.6, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
  • Официальная документация

    CUDA C++ Programming Guide

    NVIDIA · CUDA C++ Programming Guide, CUDA 12.6, страница открыта 7 сентября 2026 года

    Открыт редактором 7 сентября 2026 года, заголовок документа сверен.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие