РУС/ENG
Кафедра математики
физического факультета МГУ
Архив: 2023 - 2024

Параллельные вычисления

Курс "Параллельные вычисления"  с одной стороны посвящён рассмотрению базовых параллельных алгоритмов решения вычислительно ёмких прикладных задач математической физики, а с другой стороны -  их практической программной реализации. При этом программной реализации в курсе уделяется подавляющая часть времени. Это связано с тем, что зачастую, даже если параллельный алгоритм решения какой-либо задачи является достаточно простым и интуитивно понятным, его программная реализация может содержать огромное количество различных нюансов. Их разбору и уделяется основное время в курсе. При этом, показывается, что возможности используемых для расчётов многопроцессорных систем зачастую требуют и существенной модификации параллельных алгоритмов с целью их наиболее эффективной практической программной реализации.

 

Особенности программной реализации изучаемых алгоритмов демонстрируются с использованием языка программирования Python и пакета mpi4py, который для организации взаимодействия различных вычислительных процессов позволяет использовать технологию передачи сообщений MPI. Технология MPI на данный момент является основным средством программирования в параллельных вычислениях с распределённой памятью. При этом примеры программ строятся таким образом, что они могут быть легко переписаны с использованием языков программирования C/С++/Fortran.

Лекторы
Отчётность
зачет или экзамен
Содержание курса

Структура курса следующая. В лекциях 1-3 на примере реализации одного итерационного метода решения систем линейных алгебраических уравнений (СЛАУ) разбираются простейшие параллельные алгоритмы умножения матрицы на вектор, транспонирования матрицы и скалярного произведения векторов. Изучаемые на этих лекциях MPI-функции предоставляют достаточно широкий базовый функционал, который позволяет реализовывать большинство параллельных алгоритмов, которые могут встретиться на практике. На лекции 4 обсуждаются вопросы эффективности и масштабируемости параллельных программ. На примере реализованных на лекции 3 программ решения СЛАУ делается вывод о необходимости существенной модификации уже реализованных параллельных алгоритмов с целью понижения накладных расходов по взаимодействию вычислительных узлов. На лекции 5 рассматриваются более продвинутый алгоритм умножения матрицы на вектор, который естественным образом приводит к необходимости использования дополнительных групп процессов и коммуникаторов.  В лекции 6 рассматриваются вопросы использования виртуальных топологий, которые в определённых ситуациях могут ещё более существенным образом понизить накладные расходы по взаимодействию вычислительных узлов. В лекции 7 рассматривается параллельный вариант метода прогонки для решения СЛАУ с трёхдиагональной матрицей, как пример распараллеливания алгоритма, базовая последовательная версия которого не распараллеливается, но после определённой модификации которой появляется возможность реализовать её параллельную версию. Лекции 8-10 посвящены базовым подходам распараллеливания алгоритмов решения задач для уравнений в частных производных. При программной реализации этих подходов активно используются уже изученные ранее в курсе инструменты (в частности, виртуальные топологии). На лекциях 11-12 обсуждаются более тонкие вопросы оптимизации – асинхронные операции и отложенные запросы на взаимодействие. Эти операции применяются для модификации некоторых ранее написанных программ, что ещё повышает эффективность параллельных программных реализаций. Лекция 13 посвящена основам гибридных технологий параллельного программирования MPI + OpenMP, MPI + CUDA и MPI + CUDA + OpenMP. В Лекции 14 подводятся итоги и обсуждаются наиболее распространённые причины плохой масштабируемости параллельных программ.

 

В итоге, демонстрируется, что комбинация всего множества рассмотренных в курсе инструментов позволяет создавать достаточно эффективные программные реализации алгоритмов параллельных вычислений.

 

Для проведения тестовых расчётов задач курса используется персональный компьютер с многоядерным процессором. Для обсуждения вопросов эффективности и масштабируемости программных реализаций используется суперкомпьютер «Ломоносов-2» Центра коллективного пользования сверхвысокопроизводительными вычислительными ресурсами МГУ имени М.В. Ломоносова.

Основная литература
  1. Антонов А.С. "Параллельное программирование с использованием технологии MPI". - М.: Изд-во МГУ, 2004. - 71 с.
  2. Антонов А.С. "Параллельное программирование с использованием технологии OpenMP: Учебное пособие". - М.: Изд-во МГУ, 2009. - 77 с.
  3. Воеводин В.В., Воеводин Вл.В. "Параллельные вычисления" - СПб.: БХВ-Петербург, 2002. - 608 с.
Материалы по курсу