Чему вы научитесь
- Читать и писать ядра, понимая их поведение на уровне warp и SM
- Проектировать раскладку данных под коалесированный доступ и shared memory без банковых конфликтов
- Применять warp-примитивы, кооперативные группы и атомарные операции осознанно
- Реализовывать редукцию, скан, гистограмму, компактификацию, сортировку, отбор top-k и тайлинг
- Строить асинхронные конвейеры на потоках, событиях и CUDA Graphs
- Использовать CUB, Thrust, libcu++ и математические библиотеки NVIDIA там, где это оправдано
- Профилировать через Nsight Systems и Nsight Compute и принимать решения по метрикам
- Работать с пулами памяти, асинхронным копированием, unified memory, VMM и IPC
- Масштабировать вычисления на несколько GPU и собирать результат
- Проверять корректность через compute-sanitizer, юнит-тесты ядер и golden-модели
- Оценивать, какие алгоритмы стоит переносить на GPU, и перепроектировать те, что переносятся плохо
О курсе
Для кого этот курс
Начальные требования
Уверенное владение хотя бы одним системным языком, понимание указателей, выравнивания, кэша и стоимости обращения к памяти. Опыт сборки проектов через CMake. Знание CUDA, PTX, Nsight, cuBLAS, Thrust и CUB не предполагается.
Для практики нужна видеокарта NVIDIA архитектуры Turing или новее (sm_75: GTX 1650, RTX 20-й серии и выше) и CUDA Toolkit 13.x. Код проекта собирается и для Pascal, но только на CUDA Toolkit 12.x — CUDA 13.0 убрала поддержку этих карт. Теоретическую часть можно проходить без карты; практическую — нет.
Преподаватели курса
Формат курса
Текстовые уроки с разбором исходников. Каждый урок объясняет один инженерный механизм и доводит его до кода, который можно запустить, а заканчивается практическим заданием и вопросами для самопроверки. Главы с третьей по пятнадцатую завершаются тестовыми задачами с одним верным ответом и объяснением после неверного.
Проверка практики — на своей машине: сборка, запуск, профилирование и сравнение с числами из урока. Дедлайнов нет, темп свободный.
Что вы получите
- Восемнадцать глав с разбором кода, вывода профилировщиков и конкретных чисел
- Исходники сквозного проекта: библиотека, CLI, микробенчмарки, юнит-тесты, скрипты профилирования и санитайзинга
- Практическое задание в конце каждого урока с явным критерием выполнения
- Вопросы для самопроверки на причинно-следственные связи и компромиссы, а не на определения
- Тестовые задачи в конце глав с третьей по пятнадцатую, с объяснением после неверного ответа
- Каркас для замеров и тестов, который переносится в собственные проекты