Курс на Stepik
Обложка курса «Технология CUDA и параллельные алгоритмы» на Stepik
999 ₽

Технология CUDA и параллельные алгоритмы ★ 0.000

Открыть на
STEPIK.ORG

Практический курс по CUDA для разработчиков, которые уже уверенно пишут на системном языке и хотят перенести вычисления на GPU. Восемнадцать глав ведут от модели исполнения и иерархии памяти до профилирования, многокарточных конфигураций и проектирования параллельных алгоритмов. Через весь курс проходит один проект — GPU-движок векторного поиска, который собирается по частям от первого ядра до готового сервиса.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Технология CUDA и параллельные алгоритмы»Учеников на курсе 0
Сертификаты, выданные на курсе «Технология CUDA и параллельные алгоритмы»Сертификатов выдано 0
Отзывы о курсе «Технология CUDA и параллельные алгоритмы»Отзывов получено 0
Рейтинг курса «Технология CUDA и параллельные алгоритмы»Рейтинг курса 0.000
Уроки в курсе «Технология CUDA и параллельные алгоритмы»Количество уроков 156
Тесты в курсе «Технология CUDA и параллельные алгоритмы»Количество квизов 78
Стоимость курса «Технология CUDA и параллельные алгоритмы»Стоимость курса 999 ₽ —
Обновления курса «Технология CUDA и параллельные алгоритмы»Обновления курса — —
Дата публикации курса «Технология CUDA и параллельные алгоритмы»Дата публикации курса — ———
Последнее обновление курса «Технология CUDA и параллельные алгоритмы»Последнее обновление — ———
Сложность hard — ———

Содержание курса

Разделы в курсе «Технология CUDA и параллельные алгоритмы» 18 разделов Уроки в курсе «Технология CUDA и параллельные алгоритмы» 156 уроков Тесты в курсе «Технология CUDA и параллельные алгоритмы» 78 тестов Последнее обновление курса «Технология CUDA и параллельные алгоритмы» обн. 28 октября 2026

Модель GPU-вычислений и место CUDA

8 уроков
1. Что мы будем строить — VecLens ↗
2. Латентность против пропускной способности ↗
3. Архитектура GPU — SM, warp, планировщики ↗
4. Модель исполнения — grid, block, warp, thread ↗
5. Иерархия памяти и её реальная стоимость ↗
6. Toolchain — nvcc, PTX, SASS, fatbin ↗
7. Каркас проекта на CMake ↗
8. Измерения с первого дня — события и roofline ↗

Первые ядра и Runtime API

9 уроков
1. Ядро, конфигурация запуска, индексация ↗
2. Grid-stride loop как базовая идиома ↗
3. Ошибки CUDA — асинхронность и sticky-состояние ↗
4. Память устройства и RAII ↗
5. Managed memory и асинхронные аллокаторы ↗
6. Векторные типы, выравнивание, __restrict__ ↗
7. C++20 в device-коде ↗
8. compute-sanitizer с первого коммита ↗
9. Практика — каркас VecLens и ядро L2-расстояния ↗

Память, коалесинг и layout данных

9 уроков
1. Транзакции памяти и коалесинг ↗
2. AoS против SoA на реальных данных ↗
3. Выравнивание и векторизованные загрузки ↗
4. Shared memory — банки и конфликты ↗
5. Константная память и параметры ядра ↗
6. L2, persistence и управление кэшем ↗
7. Регистры, occupancy и spilling ↗
8. Анализ памяти в Nsight Compute ↗
9. Практика — layout базы векторов VecLens ↗

Warp-примитивы и кооперативные группы

9 уроков
1. Warp, дивергенция и стоимость ветвлений ↗
2. __shfl_sync и обмен между потоками warp ↗
3. Голосование и матчинг внутри warp ↗
4. Warp-редукция и warp-скан ↗
5. Cooperative Groups ↗
6. Independent thread scheduling ↗
7. Атомарные операции ↗
8. libcu++ — атомики, барьеры, модель памяти ↗
9. Практика — warp-based top-k ↗

Редукции, сканы и гистограммы

9 уроков
1. Редукция — путь от наивной версии к оптимальной ↗
2. Блочная редукция как переиспользуемый компонент ↗
3. Многоблочная редукция и глобальная синхронизация ↗
4. Prefix sum — Hillis-Steele и Blelloch ↗
5. Single-pass scan и decoupled look-back ↗
6. Гистограммы и приватизация ↗
7. CUB — device-, block- и warp-уровни ↗
8. Сегментированные операции ↗
9. Практика — построение инвертированных списков ↗

Тайлинг и вычислительно-плотные ядра

9 уроков
1. Арифметическая интенсивность и roofline ↗
2. Наивный GEMM и его пределы ↗
3. Тайлинг через shared memory ↗
4. Регистровый тайлинг и thread coarsening ↗
5. Двойная буферизация и prefetch ↗
6. cuBLAS — когда не писать своё ↗
7. Смешанная точность ↗
8. Tensor Cores — WMMA, mma и CUTLASS ↗
9. Практика — батчевое умножение запросов на центроиды ↗

Потоки, события и асинхронность

9 уроков
1. Асинхронная модель исполнения ↗
2. Перекрытие копирований и вычислений ↗
3. События и зависимости между потоками ↗
4. Конвейер с двойной буферизацией на хосте ↗
5. Приоритеты потоков и host callbacks ↗
6. CUDA Graphs — захват и запуск ↗
7. Обновление графов и явное построение ↗
8. Многопоточность хоста и CUDA ↗
9. Практика — конвейер запросов на потоках и графах ↗

Сортировка, отбор и top-k

9 уроков
1. Bitonic sort ↗
2. Radix sort на GPU ↗
3. CUB DeviceRadixSort и сортировка пар ↗
4. Selection — k-й элемент без полной сортировки ↗
5. Top-k — очереди и битонические сети ↗
6. Слияние отсортированных списков ↗
7. Thrust — векторы, алгоритмы, политики ↗
8. Fancy-итераторы и кастомные компараторы ↗
9. Практика — финальный отбор top-k ↗

Разреженные данные и нерегулярный параллелизм

9 уроков
1. Форматы разреженных данных ↗
2. SpMV — три стратегии распараллеливания ↗
3. Балансировка нагрузки ↗
4. Динамическое распределение работы ↗
5. BFS и обход графов ↗
6. cuSPARSE и разреженная линейная алгебра ↗
7. Stream compaction ↗
8. Хэш-таблицы на GPU ↗
9. Практика — обход инвертированных списков ↗

Математические библиотеки NVIDIA

8 уроков
1. Экосистема библиотек CUDA ↗
2. cuBLAS на практике ↗
3. cuRAND и воспроизводимость ↗
4. cuFFT и свёртки ↗
5. Точность вычислений с плавающей точкой ↗
6. CCCL как единый стек ↗
7. Интероп с CPU-кодом и другими рантаймами ↗
8. Практика — обучение центроидов k-means ↗

Профилирование и оптимизация

9 уроков
1. Методология оптимизации GPU-кода ↗
2. Nsight Systems — системный таймлайн ↗
3. Nsight Compute — анализ ядра ↗
4. Occupancy — теория и практика ↗
5. SASS — чтение и анализ ↗
6. Сокрытие латентности ↗
7. NVTX и профилирование прикладного кода ↗
8. Бенчмарки и регрессии в CI ↗
9. Практика — оптимизация поискового ядра ↗

Продвинутая работа с памятью

9 уроков
1. Асинхронное копирование и cuda-pipeline ↗
2. cuda-barrier и warp-специализация ↗
3. Пулы памяти и аллокаторы ↗
4. Virtual Memory Management API ↗
5. Unified Memory на практике ↗
6. Zero-copy и mapped memory ↗
7. IPC и разделение памяти между процессами ↗
8. Hopper и Blackwell — TMA и кластеры ↗
9. Практика — база, не помещающаяся в VRAM ↗

Несколько GPU и масштабирование

8 уроков
1. Топология системы ↗
2. Peer-to-peer доступ и копирование ↗
3. Разбиение данных — шардирование и репликация ↗
4. NCCL — коллективные операции ↗
5. Агрегация результатов и балансировка ↗
6. MPS, MIG и разделение карты ↗
7. Отказоустойчивость и деградация ↗
8. Практика — шардированный индекс ↗

Корректность, тестирование, эксплуатация

9 уроков
1. Классификация ошибок CUDA ↗
2. compute-sanitizer в рабочем цикле ↗
3. Юнит-тесты GPU-ядер ↗
4. Детерминизм и воспроизводимость ↗
5. Отладка — assert, printf, cuda-gdb ↗
6. RAII, исключения и время жизни ↗
7. Контейнеризация и деплой ↗
8. Мониторинг GPU в продакшене ↗
9. Практика — тестовый контур VecLens ↗

Проектирование параллельных алгоритмов

9 уроков
1. От последовательного алгоритма к параллельному ↗
2. Каталог параллельных паттернов ↗
3. Work efficiency и стоимость коммуникации ↗
4. Амдал, Густафсон и реальные пределы ↗
5. Выбор гранулярности ↗
6. Персистентные ядра и мегаядра ↗
7. Динамический параллелизм ↗
8. Анти-паттерны GPU-алгоритмов ↗
9. Практика — перепроектирование фильтрации по метаданным ↗

Компиляция, PTX и интеграция

8 уроков
1. PTX — чтение и написание ↗
2. Интринсики CUDA ↗
3. NVRTC — компиляция во время выполнения ↗
4. Раздельная компиляция и device LTO ↗
5. Driver API против Runtime API ↗
6. Диспетчеризация по архитектуре ↗
7. Встраивание CUDA-кода в сервисы ↗
8. Практика — JIT-специализация ядра расстояния ↗

Тонкая настройка VecLens

8 уроков
1. Профиль полного пайплайна ↗
2. Автотюнинг параметров запуска ↗
3. Сжатие векторов — скалярное квантование ↗
4. Product Quantization на GPU ↗
5. Батчинг запросов и кэширование ↗
6. Хвостовые задержки ↗
7. Сравнение с CPU-реализацией ↗
8. Итоговый бенчмарк ↗

Сборка проекта и перенос на свои задачи

8 уроков
1. Архитектура готового VecLens ↗
2. Публичный API и жизненный цикл индекса ↗
3. Сборка и конфигурация ↗
4. Полный прогон — генерация, обучение, поиск ↗
5. Расширение — новые метрики и типы данных ↗
6. Перенос подходов на свои задачи ↗
7. Куда движется CUDA ↗
8. Разбор проблем при переносе на своё железо ↗