Вычисления на видеокартах
Графические процессоры (GPU) предоставляют тысячи параллельных вычислительных потоков, поэтому при правильно организованном коде ускорение по сравнению с CPU может достигать ×10–×100. Однако не каждый алгоритм выигрывает от такой архитектуры. На курсе мы разберём, когда GPU-ускорение оправдано, и как извлечь из него максимум производительности.
Помимо разбора архитектуры и синтаксиса GPU-кода (CUDA, OpenCL, Vulkan), курс нацелен на формирование мышления в парадигме массового параллелизма. Мы обсудим, как перенести на GPU даже такие казалось бы линейные алгоритмы как merge-sort и добиться ускорения вплоть до ×100.
API-взаимодействие CPU с GPU мы обсудим лишь обзорно — в практических заданиях его возьмет на себя обёртка-библиотека. Главный акцент будет на коде, исполняемом непосредственно на видеокарте, а не на низкоуровневом управлении копированием памяти и запуском кернелов.
Базовое представление о курсе можно получить посмотрев открытую лекцию «Видеокарты: что они могут? Могут ли они хоть что-то?», однако на курсе темы разбираются гораздо плавнее и глубже, сопровождаются практическими заданиями, а завершает обучение устный экзамен.
Примеры алгоритмов, которые мы реализуем в модели массового параллелизма:
- prefix-sum (scan)
- merge-sort за вместо
- умножение матриц (ядро большинства AI-фреймворков)
- построение BVH-дерева (фундамент современного real-time Ray Tracing)
Пререквизиты:
- умение писать простой C++-код на уровне работы с арифметикой указателей
- понимание асимптотического анализа, базовых алгоритмов и структур данных
- базовые знания многопоточности
- для выполнения заданий достаточно любого ноутбука (видеокарта не требуется, можно тестировать на процессоре)
- для выполнения заданий рекомендуется Ubuntu или Windows, на MacOS потребуются дополнительные усилия
Также на лекциях будут лилипуты и клоуны!

