Company Logo
Осень 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(NlogN)\mathcal{O}(N \cdot \log N)
  • умножение матриц (ядро большинства AI-фреймворков)
  • построение BVH-дерева (фундамент современного real-time Ray Tracing)

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

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

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

Занятия

12 лекций

Лекция 1

Архитектура CPU, история GPU и GPGPU, введение в OpenCL API
Expand icon
08.09.2025 / ПН
18:00-19:30
Лекция

Лекция 2

Архитектура GPU, модель массового параллелизма
Expand icon
15.09.2025 / ПН
18:00-19:30
Лекция

Лекция 3

Локальная память, суммирование массива
Expand icon
22.09.2025 / ПН
18:00-19:30
Лекция

Лекция 4

Транспонирование и умножение матриц
Expand icon
29.09.2025 / ПН
18:00-19:30
Лекция

Лекция 5

Префиксные суммы, scan, битовая арифметика
Expand icon
06.10.2025 / ПН
18:00-19:30
Лекция

Лекция 6

Bitonic sort, radix sort
Expand icon
13.10.2025 / ПН
18:00-19:30
Лекция

Лекция 7

Merge sort, Coarse-to-Fine схема, Patch Match, Look Up Tables
Expand icon
20.10.2025 / ПН
18:00-19:30
Лекция

Лекция 8

Разреженные матрицы, Системы Непересекающихся Множеств
Expand icon
27.10.2025 / ПН
18:00-19:30
Лекция

Лекция 9

Real-time построение BVH для Ray Tracing
Expand icon
10.11.2025 / ПН
18:00-19:30
Лекция

Лекция 10

Signed Distance Functions
Expand icon
17.11.2025 / ПН
18:00-19:30
Лекция

Лекция 11

Программная растеризация
Expand icon
24.11.2025 / ПН
18:00-19:30
Лекция

Лекция 12

Как работает Nanite в Unreal Engine 5
Expand icon
01.12.2025 / ПН
18:00-19:30
Лекция

Лекторы

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

Партнеры