Компьютерные науки

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

Программа о возможностях стандарта OpenMP для создания масштабируемых приложений на многоядерных процессорах. Рассматриваются конструкции языка, функциональная отладка и анализ производительности.
Студентов 1336 Выпускников 484 Для специалистов
690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.
Темы:
Суперкомпьютерные технологии, Программирование
Объем

36 час.
Длительность

30 дней
Нагрузка в неделю

9 час.
Формат обучения

Дистанционно (самостоятельно)
Описание Эта учебная программа посвящена стандарту OpenMP как инструменту для разработки программ с общей памятью. В учебной программе изучаются конструкции распределения работы, механизмы синхронизации нитей, вложенный параллелизм и современные направления развития вычислительных систем. Важным этапом является освоение продвинутых техник отладки, устранение типичных ошибок и настройка производительности. Учебная программа ориентирована на разработчиков высокопроизводительного программного обеспечения.
Цели
  • Сформировать понимание модели параллелизма по управлению в OpenMP.
  • Дать практические навыки синхронизации нитей и настройки среды окружения.
  • Помочь освоить методы функциональной отладки многопоточных программ.
Чему я научусь?
  • Использовать директивы OpenMP для распараллеливания вычислительных циклов.
  • Выявлять и устранять ошибки синхронизации в многопоточном коде.
  • Настраивать и ускорять выполнение приложений на современных процессорах.

Авторы

Бахтин Владимир Александрович
Бахтин Владимир Александрович
Кандидат физико-математических наук, заведующий сектором Института прикладной математики им. М.В. Келдыша РАН.
Крюков Виктор Алексеевич
Крюков Виктор Алексеевич
Доктор физико-математических наук, заведующий отделом Института прикладной математики им. М.В. Келдыша РАН, профессор кафедры системного программирования факультета вычислительной математики и кибернетики Московского университета им. М.В. Ломоносова.
Чему я научусь?
  • Использовать директивы OpenMP для распараллеливания вычислительных циклов.
  • Выявлять и устранять ошибки синхронизации в многопоточном коде.
  • Настраивать и ускорять выполнение приложений на современных процессорах.

Учебный план

Занятия
Экзамен экстерном Внимание! Экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите подтвердить свои знания по данному курсу без его изучения или поверить свои знания по нему. Экзамен экстерном можно сдать только один раз. 90 мин
1 Введение Современные направления развития параллельных вычислительных систем (многоядерность и многопоточность). SMP (Symmetric Multiprocessing) и DSM (Distributed Shared... Современные направления развития параллельных вычислительных систем (многоядерность и многопоточность). SMP (Symmetric Multiprocessing) и DSM (Distributed Shared Memory)-системы. Процессы и нити. Модель общей памяти. Стандарт POSIX (Portable Operating System Interface for UNIX) для создания параллельных программ для мультипроцессоров. ещё
2 OpenMP - модель параллелизма по управлению "Выполнение OpenMP-программы (Fork and Join Model). Модель памяти. Понятие консистентности памяти. Консистентность памяти в OpenMP (weak... "Выполнение OpenMP-программы (Fork and Join Model). Модель памяти. Понятие консистентности памяти. Консистентность памяти в OpenMP (weak ordering). Классы переменных (клаузы SHARED, PRIVATE ещё
OpenMP - модель параллелизма по управлению тест для курса Параллельное программирование с OpenMP 25 мин
3 Основные понятия Директивы и клаузы. Понятие структурного блока. Компиляция OpenMP-программы. Параллельная область (директива PARALLEL). Понятие задачи (директива TASK).
Основные понятия тест для курса Параллельное программирование с OpenMP 25 мин
4 Конструкции распределения работы Распределение витков циклов. Циклы с зависимостью по данным. Организация конвейерного выполнения для циклов с зависимостью по... Распределение витков циклов. Циклы с зависимостью по данным. Организация конвейерного выполнения для циклов с зависимостью по данным. Распределение нескольких структурных блоков между нитями (директива SECTION). Редукционные операторы (клауза REDUCTION). Выполнение структурного блока одной нитью (директива SINGLE). Распределение операторов одного структурного блока между нитями (директива WORKSHARE). Копирование значений приватных переменных (клаузы FIRSTPRIVATE, LASTPRIVATE, COPYIN, COPYPRIVATE). ещё
Конструкции распределения работы тест для курса Параллельное программирование с OpenMP 25 мин
5 Конструкции для синхронизации нитей. Система поддержки выполнения OpenMP-программ. Часть 1 Директивы MASTER, CRITICAL, BARRIER, TASKWAIT, ATOMIC, FLUSH, ORDERED.
Конструкции для синхронизации нитей. Система поддержки выполнения OpenMP-программ. Часть 1 тест для курса Параллельное программирование с OpenMP 25 мин
6 Конструкции для синхронизации нитей. Система поддержки выполнения OpenMP-программ. Часть 2 Директивы MASTER, CRITICAL, BARRIER, TASKWAIT, ATOMIC, FLUSH, ORDERED.
Конструкции для синхронизации нитей. Система поддержки выполнения OpenMP-программ. Часть 2 тест для курса Параллельное программирование с OpenMP 25 мин
7 Наиболее часто встречаемые ошибки в OpenMP-программах. Функциональная отладка OpenMP-программ Создание вложенной параллельной области. Распределение витков тесно-вложенных циклов (с использованием вложенных параллельных областей и клаузы COLLAPSE).... Создание вложенной параллельной области. Распределение витков тесно-вложенных циклов (с использованием вложенных параллельных областей и клаузы COLLAPSE). Задание количества нитей для вложенной параллельной области. Задание/опрос максимального уровня вложенности для параллельных областей. Задание максимального количества создаваемых нитей (переменная OMP_THREAD_LIMIT). ещё
Наиболее часто встречаемые ошибки в OpenMP-программах. Функциональная отладка OpenMP-программ тест для курса Параллельное программирование с OpenMP 25 мин
8 Отладка эффективности OpenMP-программ Стратегии распределения витков цикла между нитями (клауза SCHEDULE). Отмена барьерной синхронизации по окончании выполнения цикла (клауза... Стратегии распределения витков цикла между нитями (клауза SCHEDULE). Отмена барьерной синхронизации по окончании выполнения цикла (клауза NOWAIT). Локализация данных. Задание поведения нитей во время ожидания (переменная OMP_WAIT_POLICY). Оптимизация OpenMP-программы при помощи Intel Thread Profiler. ещё
Отладка эффективности OpenMP-программ тест для курса Параллельное программирование с OpenMP 25 мин
9 Использование OpenMP на кластере Технология Intel Cluster OpenMP. Программная реализация DSM. Директива SHARABLE. Гибридная модель параллельного программирования MPI/OpenMP.
Использование OpenMP на кластере тест для курса Параллельное программирование с OpenMP 25 мин
Тренировочный экзамен Внимание! Тренировочный экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите проверить свои знания курса перед сдачей экзамена. Тренировочный экзамен можно сдавать сколько угодно один раз. 90 мин
Экзамен 60 мин

Какой документ я получу?

Сертификат

Выдаётся автоматически после успешного завершения программы.

Удостоверение о повышении квалификации

Выдается при наличии среднего специального или высшего образования (необходимые документы).

Стоимость программы

690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.