Бакалавриат
2024/2025
Распределенные вычисления
Статус:
Курс обязательный (Прикладная математика и информатика)
Направление:
01.03.02. Прикладная математика и информатика
Когда читается:
4-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Пеплин Федор Сергеевич
Язык:
русский
Кредиты:
6
Программа дисциплины
Аннотация
Курс направлен на формирование у студентов навыков создания параллельных программ, а также умения работы с распределенными вычислительными системами.Курс посвящен разработке параллельных программ для систем с общей памятью с использованием Pthreads, OpenMP, а также систем с распределенной памятью (MPI) и гетерогенных систем (CUDA).
Цель освоения дисциплины
- Формирование навыков создания паралелльных программ для систем с общей и распределенной памятью с использованием API pthreads, OpenMP, CUDA и MPI
- Получение практических навыков работы с файловой системов HDFS и создания программ в парадигме MapReduce
Планируемые результаты обучения
- Классифицировать параллельные системы по используемой памяти и по количеству потоков инструкций и команд
- Описывать аппаратную архитектуру параллельных систем
- Оценивать производительность параллельных программ (ускорение, эффективность), характеризовать основные закономерности (закон Амдаля, масштабируемость)
- Разрабатывать параллельные программы для систем с общей памятью с использованием pthreads и OpenMP
- Использовать мьютексы и семафоры
- Синхронизировать работу потоков с помощью семафоров и условных переменных
- Выявлять false sharing, определять его влияние на производительность параллельных программ
- Использовать блокировки чтения-записи
- Писать потокобезопасный код
- Использовать средства индивидуальной и коллективной коммуникации в MPI
- Использовать производные типы данных в MPI-программах
- Разрабатывать программы для графических процессоров с использованиеим CUDA
- Использовать общую память и warp shuffle в CUDA-приложениях
Содержание учебной дисциплины
- Общие сведения о параллельных и распределенных вычислительных системах
- Средства разработки программ для многоядерных систем с общей памятью
- Разработка программ для систем с распределенной памятью
- Средства разработки гетерогенных систем
Элементы контроля
- Многопоточность (pthreads)
- Программирование систем с распределенной памятью (MPI)
- Программирование видеокарт (CUDA)
- Экзамен
Промежуточная аттестация
- 2024/2025 2nd module0.166 * Многопоточность (pthreads) + 0.167 * Программирование видеокарт (CUDA) + 0.167 * Программирование систем с распределенной памятью (MPI) + 0.5 * Экзамен
Список литературы
Рекомендуемая основная литература
- Архитектура компьютера, Таненбаум, Э., 2014
- Параллельное программирование на современном C++ : что каждый профессионал должен знать о параллельном программировании, Гримм, Р., 2022
- Параллельное программирование с использованием OpenMP : учеб. пособие для вузов, Левин, М. П., 2012
- Параллельные вычисления на GPU : архитектура и программная модель CUDA: учеб. пособие для вузов, Боресков, А. В., 2012
- Современные языки и технологии параллельного программирования : учебник для вузов, Гергель, В. П., 2012
- Современные языки и технологии параллельного программирования : учебник, Гергель В.П., Садовничий В.А., 2012
- Теория и практика параллельных вычислений : учебное пособие, Гергель, В. П., 2007
- Технологии параллельного программирования MPI и OpenMP : учеб. пособие для вузов, Антонов, А. С., 2012
- Технология CUDA в примерах : введение в программирование графических процессоров, Сандерс, Дж., 2011
Рекомендуемая дополнительная литература
- Программирование GPU при помощи Python и CUDA : исследуйте высокопроизводительные параллельные вычисления с помощью CUDA, Тоуманен, Б., 2020