• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2025/2026

Программирование на CUDA

Когда читается: 3-й курс, 3, 4 модуль
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 6
Контактные часы: 80

Программа дисциплины

Аннотация

Наверняка каждый из вас сталкивался с обучением нейронных сетей, однако то, что происходит внутри них, остаётся для многих загадкой. На этом курсе мы изучим то, что лежит в сердце большинства ML-приложений, а именно программирование на CUDA. В нашем курсе вы научитесь писать собственные CUDA-программы, профилировать и оптимизировать их, разберётесь в архитектуре GPU и в том, как строить вычислительные ядра под любые задачи. Вы увидите, как работают NVIDIA библиотеки для GEMM, а также CuFFT и CuDNN, освоите TensorRT и Triton, поймёте разницу между GPU и TPU/NPU. И, конечно же, в курсе планируется большое количество домашних заданий на все это. Приходите, если не боитесь писать на C++ и знаете основы глубинного обучения.
Цель освоения дисциплины

Цель освоения дисциплины

  • Цель курса состоит в том, чтобы научиться писать собственные CUDA-программы, профилировать и оптимизировать их, разбираться в архитектуре GPU и в том, как строить вычислительные ядра под любые задачи.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знать базовые принципы CUDA
  • Уметь писать простые программы для GPU
  • Описывать архитектуру и формулировать основные принципы работы GP GPU NVIDIA
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение, Hello-World kernel на CUDA
  • Работа с памятью, многомерные блоки
  • Компиляция программ под разные архитектуры
  • Архитектура GPU: Warps, shared memory, warp scheduling
  • Roofline model, введение в GEMM
  • Транзакции, профилирование памяти, Nsight Compute
  • Reduce
  • CUDA streams, CUDA graphs
  • Продолжение GEMM — cuBLAS, CUTLASS
  • cuFFT, cuDNN
  • TensorRT, Triton
  • NPU, TPU, История развития видеокарт
Элементы контроля

Элементы контроля

  • неблокирующий Экзамен
  • неблокирующий БДЗ
    В этих частях домашних работ планируется написать общие компоненты для работы с нейросетями - свертки, relu, линейные слои и проч. Постепенно код будет оптимизироваться/переписываться с учетом того, что прошли на лекциях, то есть будем добавлять знания о shared memory, reduce, cuda streams и проч. Планируется также написание питон обертки над библиотекой
  • неблокирующий МДЗ
    Сюда войдет все то, что было покрыто в лекциях, но не пошло в БДЗ + дополнительные задачи для большего усвоения материала: Hello world Простые kernel-ы на работу с памятью Простые kernel-ы на shared memory Простые kernel-ы на reduce Простые kernel-ы c cuda graphs/streams Flash attention Задачи на работу с библиотеками cublass, cutlass, cufft, cudnn Задачи на TensorRT и triton
Промежуточная аттестация

Промежуточная аттестация

  • 2025/2026 4th module
    0.4 * БДЗ + 0.4 * МДЗ + 0.2 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • 16794 - Основы работы с технологией CUDA - А.Боресков; А.Харламов - ДМК Пресс - 2016 - https://hse.alpinadigital.ru/document/16794 - Alpina
  • Тоуманнен, Б. Программирование GPU при помощи Python и CUDA : руководство / Б. Тоуманнен , перевод с английского А. В. Борескова. — Москва : ДМК Пресс, 2020. — 252 с. — ISBN 978-5-97060-821-0. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/179469 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Рекомендуемая дополнительная литература

  • Рутш, Г. CUDA Fortran для инженеров и научных работников. Рекомендации по эффективному программированию на языке CUDA Fortran / Г. Рутш, М. Фатика , перевод с английского А. А. Слинкин. — Москва : ДМК Пресс, 2014. — 364 с. — ISBN 978-5-97060-065-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/58702 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Сандерс, Д. Технология CUDA в примерах: введение в программирование графических процессоров / Д. Сандерс, Э. Кэндрот. — Москва : ДМК Пресс, 2011. — 232 с. — ISBN 978-5-94074-504-4. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/3029 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Авторы

  • Кононова Елизавета Дмитриевна