Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
Съдържание и теми, включени в курса
Изчисления с GPU и архитектура на CUDA
- Разлики в архитектурата между CPU и GPU
- Модел на стрийминг мултипроцесора (streaming multiprocessor) на NVIDIA GPU
- Общ преглед на модела за програмиране на CUDA
- Хетерогенни изчисления и парадигмата хост-устройство
Настройване на средата за разработка на CUDA
- Инсталиране на CUDA Toolkit 13.x
- Компиляторът NVCC и работният процес при изграждане (build workflow)
- Проверка на средата с инструменти за заявки към устройството (device queries)
- Интегриране в IDE и инструменти за разработка
Написване и стартиране на CUDA ядра (kernels)
- Синтаксис и модификатори на функционалността на ядрото
- Конфигурация на изпълнението и стартиране
- Събиране на вектори и базови шаблони за паралелизирани данни
- Макроси за проверка на грешки в CUDA
Йерархия на нишките в CUDA и модел на изпълнение
- Организиране на решетка (grid), блок (block) и нишка (thread)
- Индексиране на нишки и изчисляване на глобалния идентификатор
- Изпълнение на warp и модел SIMT (Single Instruction, Multiple Threads)
- Заетост (occupancy) и използване на ресурсите
Архитектура на паметта в GPU и управление
- Типове памет: глобална, споделяема (shared), константна, регистри
- Заделяне и освобождаване на памет на устройството
- Прехвърляния от хоста към устройството и от устройството към хоста
- Споделяема памет за съвместна работа в рамките на блок
Унифицирана памет и миграция на данни
- Модел на унифицирана памет и управлявани заделяния (managed allocations)
- Миграция на страници и страниране по поискване (on-demand paging)
- Асинхронно предварително зареждане с cudaMemPrefetchAsync
- Подсказки за съвети относно достъпа до паметта
Системно профилиране с Nsight Systems
- Анализ на времевата линия в Nsight Systems
- Идентифициране на точките за синхронизиране между CPU и GPU
- Визуализация на изпълнението на ядрото и прехвърлянията на паметта
- Интерпретиране на данните за производителността на ниво система
Оптимизиране на ядра с Nsight Compute
- Интерактивно профилиране на ядра в Nsight Compute
- Анализ на пропускателната способност и честотата (bandwidth) на паметта
- Използване на изчислителните ресурси и статистика на състоянието на warp
- Ръководен анализ и правила за оптимизиране
Паралелни потоци (concurrent streams) и асинхронни операции
- Потоци на CUDA и стандартният поток (default stream)
- Припокриване на изпълнението на ядрата с прехвърлянето на данни
- Синхронизиране на потоци и събития в CUDA
- Шаблони за проектиране на тръбопроводи с множество потоци (multi-stream)
Обработка на грешки и инструменти за дебъгване
- Кодове за грешки на API на CUDA и стратегии за възстановяване
- compute-sanitizer за проверка на достъпа до паметта
- cuda-gdb за дебъгване на ядра
- Уверения (assertions) и откриване на грешки със синхронно изпълнение
Работен процес за оптимизиране, базиран на профилиране
- Итеративна методология за профилиране
- Идентифициране и приоритизиране на възлите за бавно изпълнение (bottlenecks)
- Тестване за регресия на производителността
- Документиране на решенията за оптимизиране
Проект за крайно-до-край (end-to-end) приложение, ускорено от изчисления с GPU
- Проектиране на пълно решение, ускорено от GPU
- Интегриране на профилирането през цялото развитие
- Бенчмарк на производителността и докладване
- Въпроси за разполагане (deployment) в производствена среда
Изисквания
- Базова компетентност в програмирането на C/C++, включваща типове променливи, цикли, условни оператори, функции и манипулации с масиви
- Запознаване с компилирането и изпълнението на програми от командния ред
- Не е необходимо предишно познанство с програмирането за GPU или CUDA
Аудитория
- Разработчици и инженери в софтуерната индустрия, които търсят начини да ускорят C/C++ приложения с помощта на GPU
- Научни изследователи и специалисти по HPC (High Performance Computing), които преминават от еднородни CPU системи към хетерогенни изчисления
- Технически ръководители, оценяващи ускорението с GPU за производствени натоварвания
8 Часа