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

Distributed Computing

2023/2024
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). Во второй части курса студенты знакомятся с основными понятиями распределенных вычислений, системой Hadoop и парадигмой MapReduce.
Цель освоения дисциплины

Цель освоения дисциплины

  • Формирование навыков создания паралелльных программ для систем с общей и распределенной памятью с использованием API pthreads, OpenMP, CUDA и MPI
  • Получение практических навыков работы с файловой системов HDFS и создания программ в парадигме MapReduce
Планируемые результаты обучения

Планируемые результаты обучения

  • Классифицировать параллельные системы по используемой памяти и по количеству потоков инструкций и команд
  • Описывать аппаратную архитектуру параллельных систем
  • Оценивать производительность параллельных программ (ускорение, эффективность), характеризовать основные закономерности (закон Амдаля, масштабируемость)
  • Разрабатывать параллельные программы для систем с общей памятью с использованием pthreads и OpenMP
  • Использовать мьютексы и семафоры
  • Синхронизировать работу потоков с помощью семафоров и условных переменных
  • Выявлять false sharing, определять его влияние на производительность параллельных программ
  • Использовать блокировки чтения-записи
  • Писать потокобезопасный код
  • Использовать средства индивидуальной и коллективной коммуникации в MPI
  • Использовать производные типы данных в MPI-программах
  • Разрабатывать программы для графических процессоров с использованиеим CUDA
  • Использовать общую память и warp shuffle в CUDA-приложениях
  • Описывать модель распределенных вычислений
  • Называть основные принципы построения логических часов (время Лэмпорта, векторное время)
  • Реализовывать алгоритмы взаимного исключения в распределенных системах
  • Описывать устройство файловой системы HDFS
  • Разрабатывать приложения с использованием парадигмы MapReduce
  • Использовать фреймворк Spark
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Общие сведения о параллельных и распределенных вычислительных системах
  • Средства разработки программ для многоядерных систем с общей памятью
  • Средства разработки программ для систем с распределенной памятью
  • Средства разработки гетерогенных систем
  • Теоретические основы распределенных вычислений
  • Распределенная обработка больших данных
Элементы контроля

Элементы контроля

  • неблокирующий Численное решение дифференциальных уравнений
  • неблокирующий Умножение векторов и матриц
  • неблокирующий Прямые и итерационные методы решения СЛАУ
  • неблокирующий Итоговый тест
Промежуточная аттестация

Промежуточная аттестация

  • 2023/2024 учебный год 2 модуль
    0.3 * Итоговый тест + 0.233 * Прямые и итерационные методы решения СЛАУ + 0.233 * Умножение векторов и матриц + 0.234 * Численное решение дифференциальных уравнений
Список литературы

Список литературы

Рекомендуемая основная литература

  • Архитектура компьютера, Таненбаум, Э., 2014
  • Параллельное программирование на современном C++ : что каждый профессионал должен знать о параллельном программировании, Гримм, Р., 2022
  • Параллельное программирование с использованием OpenMP : учеб. пособие для вузов, Левин, М. П., 2012
  • Параллельные вычисления на GPU : архитектура и программная модель CUDA: учеб. пособие для вузов, Боресков, А. В., 2012
  • Программирование GPU при помощи Python и CUDA : исследуйте высокопроизводительные параллельные вычисления с помощью CUDA, Тоуманен, Б., 2020
  • Распределенные вычислительные системы, Лорин, Г., 1984
  • Распределенные данные : алгоритмы работы современных систем хранения информации, Петров, А., 2022
  • Распределенные системы : принципы и парадигмы, 877 с., Таненбаум, Э., Стеен, М., 2003
  • Современные языки и технологии параллельного программирования : учебник для вузов, Гергель, В. П., 2012
  • Современные языки и технологии параллельного программирования : учебник, Гергель В.П., Садовничий В.А., 2012
  • Теория и практика параллельных вычислений : учебное пособие, Гергель, В. П., 2007
  • Технологии параллельного программирования MPI и OpenMP : учеб. пособие для вузов, Антонов, А. С., 2012
  • Технология CUDA в примерах : введение в программирование графических процессоров, Сандерс, Дж., 2011

Рекомендуемая дополнительная литература

  • Операционные системы. Т.2: Распределенные системы, сети, безопасность, Дейтел, Х. М., 2007
  • Распределенные алгоритмы : интуитивный подход, Фоккинк, У., 2017