Осень 2025
Курс
ПОМИ РАН

Вычисления на видеокартах

Графические процессоры (GPU) предоставляют тысячи параллельных вычислительных потоков, поэтому при правильно организованном коде ускорение по сравнению с CPU может достигать ×10–×100. Однако не каждый алгоритм выигрывает от такой архитектуры. На курсе мы разберём, когда GPU-ускорение оправдано, и как извлечь из него максимум производительности.

Помимо разбора архитектуры и синтаксиса GPU-кода (CUDA, OpenCL, Vulkan), курс нацелен на формирование мышления в парадигме массового параллелизма. Мы обсудим, как перенести на GPU даже такие казалось бы линейные алгоритмы как merge-sort и добиться ускорения вплоть до ×100.

API-взаимодействие CPU с GPU мы обсудим лишь обзорно — в практических заданиях его возьмет на себя обёртка-библиотека. Главный акцент будет на коде, исполняемом непосредственно на видеокарте, а не на низкоуровневом управлении копированием памяти и запуском кернелов.

Базовое представление о курсе можно получить посмотрев открытую лекцию «Видеокарты: что они могут? Могут ли они хоть что-то?», однако на курсе темы разбираются гораздо плавнее и глубже, сопровождаются практическими заданиями, а завершает обучение устный экзамен.

Примеры алгоритмов, которые мы реализуем в модели массового параллелизма:

  • prefix-sum (scan)
  • merge-sort за O(N)\mathcal{O}(N) вместо O(N⋅logN)\mathcal{O}(N \cdot \log N)
  • умножение матриц (ядро большинства AI-фреймворков)
  • построение BVH-дерева (фундамент современного real-time Ray Tracing)

Пререквизиты:

  • умение писать простой C++-код на уровне работы с арифметикой указателей
  • понимание асимптотического анализа, базовых алгоритмов и структур данных
  • базовые знания многопоточности
  • для выполнения заданий достаточно любого ноутбука (видеокарта не требуется, можно тестировать на процессоре)
  • для выполнения заданий рекомендуется Ubuntu или Windows, на MacOS потребуются дополнительные усилия

Также на лекциях будут лилипуты и клоуны!

Занятия

12 лекций
08.09.2025 / ПН
18:00-19:30
Лекция
15.09.2025 / ПН
18:00-19:30
Лекция
22.09.2025 / ПН
18:00-19:30
Лекция
29.09.2025 / ПН
18:00-19:30
Лекция
06.10.2025 / ПН
18:00-19:30
Лекция
13.10.2025 / ПН
18:00-19:30
Лекция
20.10.2025 / ПН
18:00-19:30
Лекция
27.10.2025 / ПН
18:00-19:30
Лекция
10.11.2025 / ПН
18:00-19:30
Лекция
17.11.2025 / ПН
18:00-19:30
Лекция
24.11.2025 / ПН
18:00-19:30
Лекция
01.12.2025 / ПН
18:00-19:30
Лекция

Лекторы

avatar
Николай ПолярныйПреподаватель
avatar
Борис СимиютинПреподаватель

Партнеры