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

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

Авторы курса: • Богословский Николай Николаевич Кандидат физико-математических наук Должность: Доцент каф. вычислительной математики и компьютерного моделирования мех.-мат. фак-та НИ ТГУ • Данилкин Евгений Александрович Кандидат физико-математических наук Должность: Доцент каф. вычислительной математики и компьютерного моделирования мех.-мат. фак-та НИ ТГУ
Организация: Томский государственный университет
Сайт курса: https://openedu.ru/course/tgu/PROGR/
Экспертная оценка (только для экспертов): Оценить курс
Посмотреть оценку (только для экспертов):  Результат



Широкое распространение параллельные вычисления приобрели с переходом компьютерной индустрии на массовый выпуск многоядерных процессоров с векторными расширениями. В настоящие время практически все устройства – от карманных гаджетов и до самых мощных суперкомпьютеров – оснащены многоядерными процессорами. И если вы пишете последовательную программу, не применив распределение работы между разными ядрами центрального процессора и не проведя векторизацию, то вы используете только часть вычислительных возможностей центрального процессора.

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

Формат: Курс включает:

  • тематические видеолекции;
  • материалы для самостоятельного изучения к каждому разделу курса;
  • список литературы и дополнительных материалов по всему курсу;
  • список необходимого программного обеспечения и инструкции по его установке;
  • практические задания на программирование по соответствующим темам курса;
  • тестовые задания на оценку (по 8–13 вопросов к каждому разделу курса).

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

Курс рассчитан на 10 недель изучения. Недельная учебная нагрузка обучающихся по курсу составляет 8–12 часов. Общая трудоемкость курса – 3 зачетные единицы.

Программа:

Раздел 1. Введение в параллельный мир

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. Синхронизация выполнения различных потоков. Замки

Раздел 4. Векторные вычисления с помощью OpenMP0

4.1. Что такое векторизация и зачем она нужна

4.2. Векторизация исполняемого кода для современных процессоров

4.3. Новые возможности в стандарте OpenMP 4.0

4.4. Примеры использования векторизации

Раздел 5. Анализ и оптимизация программ с использованием современных программных пакетов

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

Раздел 10. Итоговая аттестация




Назад в раздел