We use cookies in order to improve the quality and usability of the HSE website. More information about the use of cookies is available here, and the regulations on processing personal data can be found here. By continuing to use the site, you hereby confirm that you have been informed of the use of cookies by the HSE website and agree with our rules for processing personal data. You may disable cookies in your browser settings.

  • A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Distributed Computing

2024/2025
Academic Year
RUS
Instruction in Russian
6
ECTS credits
Delivered at:
Department of Applied Mathematics and Informatics (Faculty of Informatics, Mathematics, and Computer Science (HSE Nizhny Novgorod))
Course type:
Compulsory course
When:
4 year, 1, 2 module

Instructor

Программа дисциплины

Аннотация

Курс направлен на формирование у студентов навыков создания параллельных программ, а также умения работы с распределенными вычислительными системами.Курс посвящен разработке параллельных программ для систем с общей памятью с использованием 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

Авторы

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