Программирование массово параллельных процессоров: Практический подход
Этот курс предоставляет всестороннее введение в вычисления на графических процессорах и параллельное программирование с использованием среды CUDA C. Охватывает архитектуру графических процессоров, данные параллелизм, управление потоками, оптимизацию памяти и продвинутые вопросы производительности, проиллюстрированные реальными кейсами, такими как реконструкция МРТ и визуализация молекул.
Обзор курса
Краткое содержание
Этот курс предоставляет всестороннее введение в вычисления на графических процессорах (GPU) и параллельное программирование с использованием среды CUDA C. Охватываются архитектуры GPU, данные параллелизм, управление потоками, оптимизация памяти и продвинутые вопросы производительности, проиллюстрированные реальными кейсами, такими как реконструкция МРТ и визуализация молекул.
Освойте искусство высокопроизводительных параллельных вычислений с практическим пошаговым руководством по CUDA и архитектуре GPU.
Авторы: Дэвид Б. Кирк, Вэнь-Мэй В. Ху
Благодарности: Иэн Бак, Джон Николлс, команда NVIDIA DevTech, Дженсен Хуанг, Дэвид Лубке, Билл Бин, Саймон Грин, Марк Харрис, Манжу Хедж, Надим Мухаммад, Брент Остер, Питер Ширли, Эрик Йоунг и Сильвий Зеллер.
Цели обучения
- Отличать философии проектирования и траектории производительности многопроцессорных центральных процессоров (CPU) и многоядерных графических процессоров (GPU).
- Определять ключевые компоненты современной архитектуры GPU, включая потоковые мультипроцессоры (SM) и структуры памяти.
- Применять закон Амдала для расчета теоретического ускорения и выявлять влияние последовательных узких мест.
- Сравнить архитектурные различия между фиксированными функциональными конвейерами и программируемыми унифицированными массивами процессоров.
- Объяснить роль «GPGPU» как промежуточного этапа и ограничения ранних моделей программирования шейдеров.
- Проанализировать, как аппаратные возможности, такие как атомарные операции, синхронизация барьеров и поддержка двойной точности, способствовали переходу к масштабируемым вычислениям общего назначения.
- Выявлять и использовать параллелизм данных в алгоритмах умножения матриц.
- Реализовывать управление памятью устройств, включая выделение, передачу данных между хостом и устройством, и освобождение.
- Создавать и запускать ядра CUDA с соответствующей индексацией потоков и конфигурациями сетки/блока.
- Спроектировать многомерные иерархии потоков (сетки и блоки), чтобы отобразить сложные структуры данных на аппаратную платформу GPU.