Освоение параллельного программирования на GPU с CUDA: HW & SW

2 участника

О чём курс

Исследователь в области компьютерных систем Hamdy egy разбирает архитектуру графических процессоров Nvidia и разработку параллельных алгоритмов на платформе CUDA для высокопроизводительных вычислений.

О курсе

Материал охватывает аппаратное обеспечение и программную разработку: от физического устройства графических процессоров до профилирования вычислительных ядер. Вы проследите эволюцию микроархитектур Nvidia от Fermi до Pascal, Volta, Ampere и Hopper. Курс знакомит с организацией потоковых мультипроцессоров (SM), иерархией памяти и принципами скрытия задержек при исполнении инструкций.

Практическая часть ориентирована на задачи линейной алгебры, физического моделирования и ускорения вычислений в машинном обучении. Обучение записано на английском языке и включает 58 лекций общей продолжительностью более 23 часов. Материал носит независимый характер и не аффилирован с корпорацией Nvidia.

Что вы освоите

В программе детально рассматриваются принципы построения параллельного кода, оптимизация пропускной способности и устранение узких мест:

  • Различия архитектур CPU и GPU, модель параллелизма SIMD и причины эффективности графических процессоров в массовой обработке данных.
  • Развёртывание среды CUDA Toolkit в Windows, Linux и виртуальном окружении WSL с проверкой корректности установки.
  • Фундаментальные понятия модели CUDA: нити, блоки, сетки потоков (grids) и аппаратная диспетчеризация варпов (warps).
  • Эффективное использование разделяемой памяти (shared memory) и минимизация расхождения ветвлений внутри варпа (warp divergence).
  • Двумерная индексация блоков и потоков для параллельного сложения матриц, а также корректная обработка массивов с размерами, не кратными степени двойки.
  • Оптимизация алгоритма параллельной редукции векторов (vector reduction) с разбором состояний гонки (race condition), развёртыванием циклов (loop unrolling) и shuffle-инструкциями.
  • Профилирование с помощью утилит Nsight Compute, Nsight Systems, nvprof и сопоставление вычислений с ограничениями памяти по модели Roofline.
  • Отладка параллельных ядер в среде Visual Studio и перехват ошибок через вызовы CUDA Runtime API.

Для кого курс

Материал предназначен для специалистов, которые переводят ресурсоёмкие вычисления с центрального процессора на графические ускорители:

  • Студенты технических и инженерных специальностей, изучающие параллельное программирование.
  • Исследователи и инженеры, работающие с алгоритмами искусственного интеллекта и научным моделированием.
  • Программисты C и C++, осваивающие низкоуровневое ускорение алгоритмов на GPU.

Требования к подготовке

Для прохождения программы требуются базовые навыки программирования на языках C или C++. Потребуется общее понимание архитектуры компьютера, а также базовый опыт работы в операционных системах Linux или Windows.

Об авторе

Hamdy egy — исследовательский ассистент и аспирант (PhD student) в области компьютерной и системной инженерии. Окончил университет в 2012 году со вторым результатом в выпуске, после чего около 10 лет работал ассистентом преподавателя на том же факультете. В течение 5 лет преподавал разработку встраиваемых систем.

Программа обучения

Введение в аппаратную часть Nvidia GPU GPU vs CPU История Nvidia: как компания начала доминировать в секторе GPU Связь архитектур и поколений: Hopper, Ampere, GeForce, Tesla Как определить архитектуру и поколение Разница между GPU и чипом GPU Архитектуры и соответствующие им чипы Архитектуры Nvidia GPU от Fermi до Hopper Параметры для сравнения разных архитектур Half, single и double precision operations Compute capability и использование GPU Volta, Ampere, Pascal, SIMD Установка CUDA и других программ Какие возможности устанавливаются вместе с CUDA Toolkit Установка CUDA в Windows Установка WSL для использования Linux в Windows Установка CUDA Toolkit в Linux Введение в программирование на CUDA GitHub-репозиторий курса Сопоставление программной части CUDA с аппаратной частью Hello World program: threads и blocks Компиляция CUDA в Linux Hello World program: Warp_IDs Сложение векторов и шаги для любого CUDA-проекта Индексация блоков и потоков Уровни параллелизма при работе с очень большими векторами Профилирование Получение свойств устройства через Runtime API Nvidia-smi и его конфигурации Occupancy и скрытие задержек на GPU Количество активных блоков на один SM Сколько блоков можно выполнять одновременно на одном SM Начало работы с Nsight Compute Инструменты профилирования Nvidia: Nsight Systems, Nsight Compute, nvprof API для проверки ошибок Анализ производительности через командную строку Графический Nsight Compute в Windows и Linux Анализ производительности предыдущих приложений Анализ производительности Сложение векторов с размером, не являющимся степенью двойки Двумерная индексация Сложение матриц с использованием двумерных блоков и потоков Почему L1 hit-rate равен нулю Shared Memory и Warp Divergence Shared memory Quiz 1 Warp divergence Инструменты отладки Отладка с использованием Visual Studio Vector Reduction Vector reduction только с использованием global memory Разбор кода и профилирование vector reduction Оптимизация vector reduction Race condition и возможности отладки Оптимизация использования потоков Оптимизация через shared memory и unrolling Оптимизация через shuffle operations Roofline Model Roofline analysis: приложения, ограниченные вычислениями и памятью

Складчина создана 10 апреля 2026 г. · описание обновлено 25 октября 2026 г.

Теги курса

Инструменты
769 ₽ 1 500 ₽