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

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

О курсе

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

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

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

Формат

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

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

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

Информационные ресурсы

  1. Официальный сайт OpenMP ARB
  2. Спецификация OpenMP 4.0
  3. Примеры использования директив и функций с официального сайта
  4. Антонов А.С. Параллельное программирование с использованием технологии OpenMP.
  5. Материалы курса лекций «Параллельное программирование для многопроцессорных систем с общей и распределенной памятью», читаемого на механико-математическом факультете Томского государственного университета.
  6. Букатов А.А. Программирование многопроцессорных вычислительных систем / А.А. Букатов, В.Н. Дацюк, А.И. Жегуло. – Ростов н/Д: Издательство ООО «ЦВВР», 2003. – 208 с.
  7. Старченко А.В. Методы параллельных вычислений: учебник для вузов / А.В. Старченко, В.Н. Берцун. – Томск: Издательство Томского университета, 2013. – 224 с. (xn--80atcxa4d)
  8. Практикум по методам параллельных вычислений: учебник для вузов / А.В. Старченко, Е.А. Данилкин, В.И. Лаева [и др.]; под ред. А. В. Старченко. – М.: Издательство Моск. университета, 2010. – 199 с.
  9. Информационно аналитический центр по параллельным вычислениям
  10. Интернет-центр системы образовательных ресурсов в области суперкомпьютерного образования
  11. Список 50 наиболее мощных компьютеров СНГ

Требования

Для изучения данного курса требуются: опыт написания программ на любом языке, знание синтаксиса языка программирования C/С++, знание среды разработки MS Visual Studio. Курс ориентирован на студентов старших курсов бакалавриата и магистрантов.

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

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

Программа

Результаты обучения

В результате освоения курса студент должен уметь:

  1. Использовать особенности различных архитектур высокопроизводительных вычислительных систем;
  2. Создавать параллельные программы с использованием OpenMP и MPI;
  3. Используя полученные знания и навыки, ускорить работу существующих последовательных программ, создав на их основе параллельные программы.

Формируемые компетенции

(01.04.01 – Математика)

Знать:

  1. Основные понятия параллельного программирования, структуру, методы и функции параллельных технологий программирования OpenMP, MPI.
  2. Возможные сферы применения параллельных технологий программирования при решении практических задач фундаментальной и прикладной математики

 Уметь

  1. Разрабатывать программы для решения задач прикладного характера из различных разделов прикладной математики с использованием параллельных технологий.

Владеть

  1. Алгоритмами и эффективными технологиями параллельного программирования на основе стандарта OpenMP и MPI.

 

(03.04.02 – Физика)

Знать:

  1. Основные понятия параллельного программирования, структуру, методы и функции параллельных технологий программирования OpenMP, MPI.
  2. Возможные сферы применения параллельных технологий программирования при решении практических задач фундаментальной и прикладной физики

Владеть:

  1. базовыми знаниями и навыками управления информацией посредством современных компьютерных технологий для решения исследовательских
  2. навыками исследований с помощью современной аппаратуры и информационных технологий

 

(09.04.04  - Программная инженерия)

Знать:

  1. Основные понятия параллельного программирования, структуру, методы и функции параллельных технологий программирования OpenMP, MPI

Уметь:

  1. Уметь выбирать подходящие параллельные методы, алгоритмы и подходы для решения задачи. Разрабатывать программы для решения задач прикладного характера из различных разделов прикладной математики с использованием параллельных технологий.

Владеть:

  1. Способностью к освоению современных информационных технологий в области параллельного программирования. Методами и эффективными технологиями параллельного программирования на основе стандарта OpenMP и MPI

 

(02.04.02 - Фундаментальная информатика и информационные технологии)

Знать

  1. Основные понятия параллельного программирования, структуру, методы и функции параллельных технологий программирования OpenMP, MPI

Уметь

  1. Уметь выбирать подходящие параллельные методы, алгоритмы и подходы для решения задачи/ Разрабатывать программы для решения задач прикладного характера из различных разделов прикладной математики с использованием параллельных технологий.

Владеть

  1.  Способностью к освоению современных информационных технологий в области параллельного программирования. Методами и эффективными технологиями параллельного программирования на основе стандарта OpenMP и MPI.

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

Богословский Николай Николаевич,
кандидат физико-математических наук,
доцент кафедры вычислительной математики и компьютерного моделирования мех.-мат. фак-та НИ ТГУ

Данилкин Евгений Александрович,
кандидат физико-математических наук,
доцент кафедры вычислительной математики и компьютерного моделирования мех.-мат. фак-та НИ ТГУ