Словарь терминов GPU (перевод Modal GPU Glossary на русский)
Источник: Modal GPU Glossary
Лицензия оригинала: CC BY 4.0
Перевод: выполнен для образовательных целей
Введение
Мы создали этот словарь, чтобы решить проблему, с которой столкнулись при работе с GPU в Modal: документация фрагментирована, что затрудняет связь концепций на разных уровнях стека, таких как архитектура потокового мультипроцессора, вычислительная способность и флаги компилятора nvcc.
Аппаратное обеспечение устройства (Device Hardware)
Эти термины и технологии относятся к физическим компонентам GPU — «устройству» на языке NVIDIA.
CUDA (Архитектура устройства)
Модель параллельных вычислений и архитектура программирования NVIDIA для GPU.
Streaming Multiprocessor (SM) — Потоковый мультипроцессор
Основной вычислительный блок GPU, содержащий ядра CUDA, тензорные ядра, планировщики варпов, кэши и регистры. Несколько SM работают параллельно на одном GPU.
Core — Ядро
Общий термин для вычислительных единиц внутри SM. Включает CUDA Cores и Tensor Cores.
Special Function Unit (SFU) — Блок специальных функций
Аппаратный блок для выполнения сложных математических операций: синус, косинус, экспонента, обратная величина и др.
Load/Store Unit (LSU) — Блок загрузки/сохранения
Отвечает за операции чтения и записи данных между регистрами и памятью GPU.
Warp Scheduler — Планировщик варпов
Компонент SM, который выбирает готовый варп для выполнения инструкции на доступных исполнительных блоках.
CUDA Core — Ядро CUDA
Ядро GPU, выполняющее скалярные арифметические инструкции. В отличие от ядер CPU, CUDA Cores не планируются независимо: группы из 32 ядер (варп) получают одну и ту же инструкцию от планировщика варпов, но применяют её к разным данным (модель SIMT — Single Instruction, Multiple Threads).
Tensor Core — Тензорное ядро
Специализированное ядро GPU, выполняющее матричные операции за одну инструкцию. Обеспечивает до 100× больше операций с плавающей запятой в секунду по сравнению с CUDA Cores. Используется для ускорения операций глубокого обучения, таких как умножение матриц с накоплением (D = AB + C).
Tensor Memory Accelerator (TMA) — Ускоритель тензорной памяти
Аппаратный блок для эффективной передачи данных между глобальной памятью и тензорной памятью, оптимизированный для работы с тензорными ядрами.
Streaming Multiprocessor Architecture — Архитектура потокового мультипроцессора
Организация компонентов внутри SM: распределение CUDA Cores, Tensor Cores, кэшей, регистров и планировщиков. Меняется от поколения к поколению GPU (Volta, Ampere, Hopper, Blackwell).
Texture Processing Cluster (TPC) — Кластер обработки текстур
Группа из нескольких SM, объединённых для обработки графических и вычислительных задач, связанных с текстурной памятью.
Graphics/GPU Processing Cluster (GPC) — Графический/GPU-кластер обработки
Высокоуровневая группировка TPC, управляющая распределением задач между несколькими кластерами на GPU.
Register File — Файл регистров
Быстрая память на кристалле SM, используемая для хранения локальных переменных потоков. Каждый поток имеет доступ к собственному набору регистров.
L1 Data Cache — Кэш данных L1
Быстрый кэш первого уровня внутри SM для ускорения доступа к часто используемым данным из глобальной памяти.
Tensor Memory — Тензорная память
Специализированная высокоскоростная память, оптимизированная для питания тензорных ядер данными при выполнении матричных операций.
GPU RAM — ОЗУ GPU
Основная память графического процессора (также называемая глобальной памятью). Хранит данные, доступные всем SM, но с более высокой задержкой по сравнению с кэшами и регистрами.
Программное обеспечение устройства (Device Software)
Эти термины относятся к программному обеспечению, выполняемому непосредственно на GPU («устройстве»).
CUDA (Модель программирования)
Модель параллельного программирования NVIDIA для массово-параллельных процессоров. Включает иерархию потоков, модель памяти и механизмы синхронизации.
Streaming ASSembler (SASS) — Потоковый ассемблер
Низкоуровневый машинный код, выполняемый непосредственно на GPU. Генерируется компилятором из PTX.
Parallel Thread eXecution (PTX) — Параллельное выполнение потоков
Промежуточное представление (IR) CUDA, виртуальная ассемблерная платформа, независимая от конкретного поколения GPU. Компилируется в SASS драйвером во время выполнения.
Compute Capability — Вычислительная способность
Версия архитектуры GPU, определяющая доступные инструкции, функции и ограничения. Примеры: 7.5 (Turing), 8.0 (Ampere), 9.0 (Hopper).
Thread — Поток
Минимальная единица выполнения в CUDA. Каждый поток выполняет один экземпляр ядра с собственными регистрами и программным счётчиком.
Warp — Варп
Группа из 32 потоков, которые планируются и выполняются вместе на одном SM. Все потоки варпа выполняют одну и ту же инструкцию одновременно (модель SIMT). Варп — основная единица планирования на GPU.
Warpgroup — Группа варпов
Логическая группировка нескольких варпов для координации выполнения и синхронизации внутри блока потоков.
Cooperative Thread Array (CTA) — Кооперативный массив потоков
Также известен как Thread Block (блок потоков). Группа потоков, которые могут сотрудничать через общую память и синхронизацию. Все потоки блока выполняются на одном SM.
Kernel — Ядро (функция)
Функция CUDA, запускаемая с хоста (CPU) и выполняемая параллельно множеством потоков на GPU. Запускается один раз, но выполняется одновременно многими потоками.
Thread Block — Блок потоков
Группа потоков, которые могут обмениваться данными через общую память и синхронизироваться. Базовая единица распределения работы на SM.
Thread Block Grid — Сетка блоков потоков
Коллекция всех блоков потоков, выполняющих одно ядро. Представляет весь объём параллельной работы для запуска ядра.
Thread Hierarchy — Иерархия потоков
Структура организации потоков в CUDA: Grid → Block → Warp → Thread. Позволяет масштабируемое распределение работы по GPU.
Memory Hierarchy — Иерархия памяти
Многоуровневая система памяти GPU: регистры → общая память → кэш L1/L2 → глобальная память → память хоста. Каждый уровень отличается по скорости, объёму и области видимости.
Registers — Регистры
Самая быстрая память, приватная для каждого потока. Используется для локальных переменных и временных значений.
Shared Memory — Общая память
Быстрая память, разделяемая всеми потоками внутри одного блока потоков. Используется для межпоточного обмена данными и оптимизации доступа к глобальной памяти.
Global Memory — Глобальная память
Основная память GPU, доступная всем потокам всех блоков. Имеет высокую пропускную способность, но также высокую задержку. Соответствует памяти GPU RAM.
Программное обеспечение хоста (Host Software)
Эти термины относятся к программному обеспечению, выполняемому на CPU («хосте») при управлении GPU-программами.
CUDA (Платформа программного обеспечения)
Полный стек инструментов NVIDIA для разработки GPU-приложений: компиляторы, библиотеки, API, профилировщики.
CUDA C++ (язык программирования)
Расширение C++ с ключевыми словами и конструкциями для написания ядер и управления выполнением на GPU (__global__, <<<grid, block>>>, и др.).
NVIDIA GPU Drivers — Драйверы NVIDIA GPU
Системное ПО, обеспечивающее взаимодействие между ОС/приложениями хоста и аппаратным обеспечением GPU.
nvidia.ko
Модуль ядра Linux для драйверов NVIDIA, обеспечивающий низкоуровневый доступ к GPU.
CUDA Driver API
Низкоуровневый API для управления контекстами, модулями и памятью GPU. Предоставляет больше контроля, чем Runtime API.
libcuda.so
Библиотека реализации CUDA Driver API в Linux.
NVIDIA Management Library (NVML)
API для мониторинга и управления состоянием GPU: температура, загрузка, память, питание.
libnvml.so
Библиотека реализации NVML в Linux.
nvidia-smi
Утилита командной строки на базе NVML для мониторинга и управления GPU.
CUDA Runtime API
Высокоуровневый API для запуска ядер, управления памятью и синхронизации. Проще в использовании, чем Driver API.
libcudart.so
Библиотека реализации CUDA Runtime API в Linux.
NVIDIA CUDA Compiler Driver (nvcc)
Компилятор CUDA: преобразует код CUDA C++ в PTX и/или машинный код для целевых архитектур GPU.
NVIDIA Runtime Compiler
Компонент, компилирующий PTX в SASS во время выполнения, обеспечивая совместимость с разными поколениями GPU.
NVIDIA CUDA Profiling Tools Interface (CUPTI)
Интерфейс для создания инструментов профилирования и трассировки CUDA-приложений.
NVIDIA Nsight Systems
Профилировщик производительности для анализа работы CPU и GPU, выявления узких мест и оптимизации приложений.
CUDA Binary Utilities
Набор утилит для работы с бинарными файлами CUDA: cuobjdump, nvdisasm, cudabacktrace и др.
cuBLAS (CUDA Basic Linear Algebra Subroutines)
Оптимизированная библиотека линейной алгебры для GPU: матричные операции, векторные вычисления, решения СЛАУ.
cuDNN (CUDA Deep Neural Network library)
Библиотека примитивов для глубокого обучения: свёртки, пулинг, нормализация, активации — оптимизирована для NVIDIA GPU.
Производительность (Performance)
GPUs используются, когда производительность приложения на универсальном оборудовании недостаточна. Это делает программирование для них принципиально отличным от большинства других форм программирования.
«Производительность — это продукт» — слоган NVIDIA.
Performance Bottleneck — Узкое место производительности
Компонент системы, ограничивающий общую производительность: вычисления, память, пропускная способность, задержки.
Roofline Model — Модель «потолка»
Визуальная модель производительности, связывающая арифметическую интенсивность с пропускной способностью памяти и вычислительной мощностью для определения теоретического максимума.
Compute-bound — Ограничено вычислениями
Ситуация, когда производительность ограничена скоростью выполнения арифметических операций, а не доступом к памяти.
Memory-bound — Ограничено памятью
Ситуация, когда производительность ограничена пропускной способностью или задержками памяти, а не вычислительной мощностью.
Arithmetic Intensity — Арифметическая интенсивность
Отношение количества арифметических операций к объёму переданных данных (FLOP/байт). Ключевой параметр для анализа по модели Roofline.
Overhead — Накладные расходы
Дополнительные затраты времени или ресурсов на управление, синхронизацию, передачу данных, не связанные с полезной работой.
Little’s Law — Закон Литтла
Формула из теории массового обслуживания: L = λ × W, где L — среднее число задач в системе, λ — интенсивность поступления, W — среднее время выполнения. Применяется для анализа параллелизма GPU.
Memory Bandwidth — Пропускная способность памяти
Максимальный объём данных, который может быть передан между памятью и вычислительными блоками за единицу времени (ГБ/с).
Arithmetic Bandwidth — Арифметическая пропускная способность
Максимальное количество арифметических операций, которые GPU может выполнить за единицу времени (TFLOP/s).
Latency Hiding — Сокрытие задержек
Техника параллельного выполнения множества варпов: пока один варп ожидает данные, планировщик переключается на другой, поддерживая загрузку исполнительных блоков.
Warp Execution State — Состояние выполнения варпа
Текущий статус варпа: активен, ожидает (stalled), завершён. Определяет, может ли варп быть выбран для выполнения.
Active Cycle — Активный такт
Такт, в котором варп выполняет полезную инструкцию (не ожидает данные или синхронизацию).
Occupancy — Заполненность
Отношение числа активных варпов на SM к максимально возможному. Высокая заполненность помогает скрывать задержки памяти.
Pipe Utilization — Загрузка конвейера
Доля времени, в течение которой исполнительные блоки (конвейеры) выполняют полезные инструкции.
Peak Rate — Пиковая производительность
Теоретический максимум операций в секунду, который может достичь GPU при идеальных условиях.
Issue Efficiency — Эффективность выдачи инструкций
Процент тактов, в которых планировщик успешно выдаёт инструкцию варпу (не простаивает из-за зависимостей или конфликтов).
Streaming Multiprocessor Utilization — Загрузка SM
Доля времени, в течение которой SM выполняет полезные вычисления, а не простаивает.
Warp Divergence — Расхождение варпа
Ситуация, когда потоки внутри варпа выполняют разные ветви кода (например, из-за условия if). Приводит к последовательному выполнению ветвей и снижению производительности.
Scoreboard Stall — Остановка по таблице результатов
Задержка выполнения инструкции из-за зависимости от результата предыдущей инструкции, ещё не завершённой.
Branch Efficiency — Эффективность ветвления
Метрика, показывающая, насколько эффективно выполняются условные переходы внутри варпа (минимизация warp divergence).
Memory Coalescing — Коалесценция памяти
Оптимизация доступа к глобальной памяти, когда соседние потоки обращаются к соседним адресам, позволяя объединить несколько запросов в один транзакционный.
Bank Conflict — Конфликт банков
Ситуация в общей памяти, когда несколько потоков одного варпа обращаются к разным адресам в одном банке памяти, вызывая последовательное обслуживание запросов.
Register Pressure — Давление регистров
Ситуация, когда количество регистров, требуемых потоком, превышает доступное, что приводит к выгрузке данных в локальную память и снижению производительности.
🔗 Полезные ссылки
⚠️ Примечание: Данный перевод создан на основе публично доступной информации и знаний о терминологии CUDA/GPU. Для точных технических деталей рекомендуется обращаться к оригинальной документации NVIDIA и Modal. Некоторые термины могут иметь несколько устоявшихся вариантов перевода в русскоязычной литературе.
Автор: Seklikov


