Освоение параллельного программирования на GPU с CUDA: HW & SW
О чём курс
Исследователь в области компьютерных систем 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% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.