- Цели и задачи дисциплины
- Целью дисциплины является формирование у студентов базовых знаний, умений и навыков разработки параллельных программ для современных высокопроизводительных вычислительных архитектур (многоядерные процессоры, графические процессоры, вычислительные кластеры) с применением современных парадигм и инструментов программирования (OpenMP, MPI, CUDA) в области машинного и глубокого обучения.
- Краткое содержание дисциплины
- Понятие параллельных вычислений. Необходимость параллельных вычислений в искусственном интеллекте. Примеры вычислительно емких задач из различных предметных областей, иллюстрирующих интеграцию параллельных высокопроизводительных вычислений и искусственного интеллекта. Виды параллельной обработки данных. Обзор параллельных вычислительных систем. Оценка производительности многопроцессорных систем. Классификации параллельных вычислительных систем: классификация Флинна, классификация MIMD-систем. Модели программирования для различных архитектур. Понятие параллельного алгоритма. Цикл разработки параллельного алгоритма. Примеры параллельных алгоритмов. Оценка эффективности параллельного алгоритма (ускорение, эффективность, стоимость). Законы Амдала и Густавсона—Барсиса. Факторы, препятствующие масштабированию алгоритмов. Модель программирования в общей памяти. Модель параллелизма fork-join. Стандарт OpenMP. Принципы использования. Основные директивы и функции. Модель передачи сообщений в системах с распределенной памятью. Модели SPMD и MPMD запуска параллельных программ. Стандарт MPI. Принципы использования. Основные функции. Введение в программирование на графических процессорах. Архитектура и устройство графических процессоров. Основные различия CPU и GPU. Программно-аппаратная архитектура CUDA. Особенности выполнения GPU программ. Асинхронность в CUDA. Обработка ошибок. Иерархия памяти CUDA. Атомарные операции в CUDA. Разбор параллельной реализации матричного умножения как ключевой операции в обучении и инференсе нейронных сетей. CUDA потоки и события. Использование CUDA потоков для реализации асинхронных операций. Интегрированные среды разработки с поддержкой CUDA, инструменты для отладки и профилирования. Оптимизация GPU программ. Фреймворки с поддержкой CUDA (PyTorch, TensorFlow). Библиотеки для ускорения обучения и инференса моделей машинного и глубокого обучения (cuBLAS, cuSolver, cuFFT, cuDNN, TensorRT, PyCUDA и др.). Программирование систем с несколькими графическими процессорами. Распределенное обучение моделей машинного и глубокого обучения (Distributed Deep Learning, DDL). Синхронное и асинхронное DDL. Централизованное и децентрализованное DDL. Схемы распределенного обучения ML и DL моделей.
- Компетенции обучающегося, формируемые в результате освоения дисциплины
- Выпускник должен обладать:
- ОПК-2 Способен применять компьютерные/суперкомпьютерные методы, современное программное обеспечение, в том числе отечественного происхождения, для решения задач профессиональной деятельности
- ПК-4 [PL-3] Способен применять языки программирования С/С++ для решения задач в области ИИ
- ПК-10 [BD-4] Способен применять различные модели и (или) технологии обработки данных
- Образование
- Учебный план 02.03.02, 2025, (4.0), Фундаментальная информатика и информационные технологии
- Высокопроизводительные параллельные вычисления


