• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
08
Сентябрь

Распределенные вычисления

2024/2025
Учебный год
RUS
Обучение ведется на русском языке
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 module
    0.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

Авторы

  • Пеплин Федор Сергеевич
  • Колданов Петр Александрович