Руководство по программированию CUDA
Официальный, всесторонний ресурс для разработчиков, чтобы узнать модель программирования CUDA и как писать высокопроизводительный код, выполняющийся на графических процессорах NVIDIA. В этом руководстве рассматриваются архитектура платформы, интерфейс программирования, продвинутые функции аппаратного обеспечения и технические характеристики.
Обзор курса
Краткое содержание
Официальный, всесторонний ресурс для разработчиков, посвящённый изучению модели программирования CUDA и написанию высокопроизводительного кода, выполняющегося на графических процессорах NVIDIA. В этом руководстве рассматриваются архитектура платформы, интерфейс программирования, продвинутые аппаратные возможности и технические характеристики.
Освойте искусство параллельных вычислений с отраслевым стандартом — руководством по NVIDIA CUDA.
Автор: Корпорация NVIDIA
Благодарности: Авторские права © 2007–2024 Корпорация NVIDIA и её дочерние структуры. Все права защищены.
Цели обучения
- Определить роли хоста (ЦП) и устройства (ГПУ) в гетерогенной системе.
- Объяснить модель программирования SIMT и иерархическую организацию потоков, блоков и сеток.
- Различать код PTX (Parallel Thread Execution) и двоичный код (cubins), объяснить, как компиляция «по требованию» (JIT) обеспечивает совместимость.
- Создавать и компилировать ядра CUDA: писать функции global, настраивать выполнение с помощью тройного знака «>>>, и управлять рабочим процессом компиляции NVCC.
- Оптимизировать память и перемещение данных: различать модели унифицированной, явной и сопоставленной памяти, использовать фиксированную в памяти память хоста для эффективных передач.
- Управлять параллельным выполнением: использовать потоки CUDA, события и кооперативные группы для управления асинхронными задачами и синхронизации операций ЦП-ГПУ.
- Выполнять сложные арифметические действия с указателями и определять архитектурные узкие места (фон Неймана против Архимеда).
- Реализовывать продвинутые шаблоны выполнения CUDA, включая программно зависимые запуски ядер и гетерогенные пакетные передачи памяти.
- Использовать аппаратно-зависимые особенности, такие как области видимости потоков, асинхронные прокси и конвейеры, для максимизации конкуренции.
- Настроить и наладить производительность унифицированной памяти с использованием предварительной загрузки, подсказок использования и управления размером страницы.