Освоение параллельного программирования на GPU с CUDA: HW & SW
О чём курс
Курс «Mastering GPU Parallel Programming with CUDA» представляет собой углубленное практическое руководство по освоению технологий параллельных вычислений на современных графических процессорах. Программа разработана для тех, кто стремится выйти за рамки базового программирования и научиться использовать колоссальную вычислительную мощность GPU для решения сложных инженерных, научных и AI-задач. Обучение построено на сочетании теоретических основ аппаратной архитектуры и интенсивной практики написания кода, что позволяет слушателям не просто копировать примеры, а глубоко понимать процессы, происходящие «под капотом» видеокарт.
Курс охватывает эволюцию архитектур NVIDIA — от Fermi до современных Hopper и Ampere, объясняя, как аппаратные изменения влияют на производительность программного обеспечения. Участники получат комплексное представление о различиях между CPU и GPU, изучат иерархию памяти, принципы работы потоков (threads), блоков (blocks) и сеток (grids), а также освоят методы эффективного распараллеливания вычислений. Особое внимание уделяется инструментам профилирования, таким как Nsight Compute и nvprof, которые необходимы для поиска «узких мест» в коде, анализа задержек и оптимизации использования ресурсов GPU.
В процессе обучения вы научитесь настраивать среду разработки CUDA Toolkit в различных операционных системах (Windows, Linux и WSL), освоите двумерную индексацию для работы с матрицами, научитесь эффективно использовать shared memory и минимизировать warp divergence. Практическая часть включает в себя отладку приложений, обработку ошибок через runtime API и применение модели Roofline для анализа ограничений производительности (вычислительных или пропускной способности памяти).
Курс идеально подходит для студентов инженерных специальностей, исследователей и разработчиков, желающих углубить свои знания в области параллельного программирования. Благодаря структурированному подходу, вы пройдете путь от написания простейшей программы «Hello World» до проектирования высокопроизводительных ядер (kernels), способных эффективно работать на современном оборудовании. По завершении обучения вы будете обладать навыками тонкой настройки CUDA-приложений, что является критически важным для высокопроизводительных вычислений (HPC). Материал курса является независимым образовательным ресурсом, предоставляющим фундаментальные знания, необходимые для профессиональной работы с технологиями NVIDIA.
Программа обучения
Введение в аппаратную часть Nvidia GPU GPU vs CPU История Nvidia: как компания начала доминировать в секторе GPU Связь архитектур и поколений: Hopper, Ampere, GeForce, Tesla Как определить архитектуру и поколение Разница между GPU и чипом GPU Архитектуры и соответствующие им чипы Архитектуры Nvidia GPU от Fermi до Hopper Параметры для сравнения разных архитектур Half, single и double precision operations Compute capability и использование GPU Volta, Ampere, Pascal, SIMD Установка CUDA и других программ Какие возможности устанавливаются вместе с CUDA Toolkit Установка CUDA в Windows Установка WSL для использования Linux в Windows Установка CUDA Toolkit в Linux Введение в программирование на CUDA GitHub-репозиторий курса Сопоставление программной части CUDA с аппаратной частью Hello World program: threads и blocks Компиляция CUDA в Linux Hello World program: Warp_IDs Сложение векторов и шаги для любого CUDA-проекта Индексация блоков и потоков Уровни параллелизма при работе с очень большими векторами Профилирование Получение свойств устройства через Runtime API Nvidia-smi и его конфигурации Occupancy и скрытие задержек на GPU Количество активных блоков на один SM Сколько блоков можно выполнять одновременно на одном SM Начало работы с Nsight Compute Инструменты профилирования Nvidia: Nsight Systems, Nsight Compute, nvprof API для проверки ошибок Анализ производительности через командную строку Графический Nsight Compute в Windows и Linux Анализ производительности предыдущих приложений Анализ производительности Сложение векторов с размером, не являющимся степенью двойки Двумерная индексация Сложение матриц с использованием двумерных блоков и потоков Почему L1 hit-rate равен нулю Shared Memory и Warp Divergence Shared memory Quiz 1 Warp divergence Инструменты отладки Отладка с использованием Visual Studio Vector Reduction Vector reduction только с использованием global memory Разбор кода и профилирование vector reduction Оптимизация vector reduction Race condition и возможности отладки Оптимизация использования потоков Оптимизация через shared memory и unrolling Оптимизация через shuffle operations Roofline Model Roofline analysis: приложения, ограниченные вычислениями и памятью
Теги курса
Отзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.