Введение в параллельное программирование с использованием OpenMP и MPI

Об этом курсе

Потребность решения сложных прикладных задач с большим объемом вычислений и принципиальная ограниченность максимального быстродействия «классических» – по схеме фон Неймана – ЭВМ привели к появлению многопроцессорных вычислительных систем (МВС) или суперкомпьютеров. Широкое распространение параллельные вычисления приобрели с переходом компьютерной индустрии на массовый выпуск многоядерных процессоров с векторными расширениями. В настоящие время практически все устройства – от карманных гаджетов и до самых мощных суперкомпьютеров – оснащены многоядерными процессорами. И если вы пишите последовательную программу, не применив распределение работы между разными ядрами центрального процессора и не проведя векторизацию, то вы используете только часть вычислительных возможностей центрального процессора.

Пройдя этот курс, вы познакомитесь с основными архитектурами МВС, с двумя стандартами (OpenMP и MPI), позволяющими писать параллельные программы для систем с общей и распределенной памятью. На простых примерах будут разобраны основные конструкции и способы распределения работы. Выполнение практических заданий позволит вам приобрести практические навыки создания параллельных программ. Курс будет интересен всем, кто занимается программированием.

Требования

Для участия в курсе слушателю необходимо иметь базовые знания по программированию с использованием С/С++.

Программа курса

Введение в параллельное программирование с использованием OpenMP и MPI

Введение в параллельный мир
1.1.История развития высокопроизводительных вычислительных систем.
1.2.Иерархическая организация памяти в компьютере.
1.3.Основные архитектуры многопроцессорных вычислительных систем. Их классификация.
1.4.Обзор задач требующих использования СуперЭВМ.
1.5.Инструменты создания параллельных программ.

2.Системы с общей памятью. Основы OpenMP
2.1.Особенности программирования для систем с общей памятью. Понятие процесса, потока и многопоточности.
2.2.Технология OpenMP, особенности и ее компоненты.
2.3.Задание параллельной области и опции влияющие на ее выполнение.
2.4.Модель памяти. Классы переменных в OpenMP.
2.5.Режимы выполнения многопоточных программ. Вложенный параллелизм.

3.Директивы распределения работы и синхронизации работы
3.1. Распараллеливание выполнения циклов.
3.2. Распределение нескольких структурных блоков между потоками.
3.3. Распределение работы на основе независимых задач.
3.4. Синхронизация выполнения различных потоков. Простые директивы.
3.5. Синхронизация выполнения различных потоков. Замки.

Векторные вычисления с помощью OpenMP 4.0
4.1. Что такое векторизация и зачем она нужна.
4.2.Векторизация исполняемого кода для современных процессоров.
4.3.Новые возможности в стандарте OpenMP 4.0
4.4.Примеры использования векторизации.

Анализ и оптимизация программ с использованием современных программных пакетов
5.1. Основные опции компилятора Intel. Автоматическое распараллеливание.
5.2. Основные возможности Intel Parallel Studio.
5.3. Поиск ошибок работы с памятью с использованием Intel® Parallel Inspector.
5.4. Профилирование программ с использованием Intel® Parallel Amplifier.

6.Системы с распределённой памятью. Основы MPI
6.1. Основные понятия модели передачи сообщений, MPI среди других средств разработки параллельных программ.
6.2. Основные понятия и определения, состав MPI. Синтаксис функций MPI.
6.3. Первая параллельная программа с использованием MPI.
6.4. Ускорение работы параллельной программы.
6.5. О построении параллельных алгоритмов.

7. Прием и передача сообщений между отдельными процессами
7.1. Обзор двухточечных обменов сообщениями.
7.2. Блокирующие обмены.
7.3. Неблокирующие обмены.
7.4. Параллельные алгоритмы суммирования.
7.5. Примеры параллельных программ, демонстрирующие использование функций MPI, изученных в модуле 7.

8.Коллективные операции
8.1. Обзор коллективных операций. Широковещательная рассылка.
8.2. Функции сбора данных со всех процессов.
8.3. Функции распределения данных по всем процессам.
8.4. Функции редукции.
8.5.Примеры параллельных программ, демонстрирующие использование функций MPI, изученных в модуле 8

9.Производные типы данных. Группы и коммуникаторы
9.1. Создание и использование производных типов данных.
9.2. Создание групп и коммуникаторов.
9.3. Виртуальные топологии. Декартова топология. Организация пересылок данных в декартовой топологии.
9.4. Виртуальные топологии. Топология графа.
9.5. Примеры параллельных программ, демонстрирующие использование функций MPI, изученных в модуле 9.

Преподаватель

Course Staff Image #1

Николай Николаевич Богословский (Nikolay N. Bogoslovskiy)

Кандидат физико-математических наук, доцент (Сandidate of Physics and Mathematics, Associate Professor)

Кафедра вычислительной математики и компьютерного моделирования ММФ (Department of Calculus Mathematics and Computer Modelling, Mechanics and Mathematics Faculty)

Course Staff Image #1

Евгений Александрович Данилкин (Evgeniy A. Danilkin)

Кандидат физико-математических наук, доцент (Сandidate of Physics and Mathematics, Associate Professor)

Кафедра вычислительной математики и компьютерного моделирования ММФ (Department of Calculus Mathematics and Computer Modelling, Mechanics and Mathematics Faculty)

СТОИМОСТЬ И УСЛОВИЯ УЧАСТИЯ

Курс бесплатный. Для участия необходимо зарегистрироваться. Вам придёт приглашение со ссылкой на онлайн-класс, как только начнется курс.

  1. Номер курса

    PR1
  2. Начало курса

    янв. 01, 2017
  3. Занятия заканчиваются

    сент. 10, 2017
  4. Оценка сложности

    2 часа
Внести в список