Опубликован: 15.04.2009 | Уровень: специалист | Доступ: платный
Параллельное программирование с OpenMP В рамках курса проводится изучение основных возможностей стандарта OpenMP, необходимых для создания эффективных параллельных программ для многоядерных и многопоточных процессоров. Рассматриваются подходы для функциональной отладки OpenMP-программ, а также отладки эффективности.
В рамках курса рассматриваются современные направления развития параллельных вычислительных систем (многоядерность и многопоточность), OpenMP – модель параллелизма по управлению, конструкции распределения работы, конструкции для синхронизации нитей, система поддержки выполнения OpenMP-программ, переменные окружения, управляющие выполнением OpenMP-программы, вложенный параллелизм, наиболее часто встречаемые ошибки в OpenMP-программах, функциональная отладка OpenMP-программ, отладка эффективности OpenMP-программ, использование OpenMP на кластере.
Цель: Цель курса состоит в изложении основных возможностей стандарта OpenMP, необходимых для создания эффективных параллельных программ для многоядерных и многопоточных процессоров.
Необходимые знания: При изложении учебного материала курса у обучаемых предполагается наличие общих (начальных) знаний в области программирования.

План занятий

ЗанятиеЗаголовок <<Дата изучения
-
Лекция 1
1 час 50 минут
Введение
Современные направления развития параллельных вычислительных систем (многоядерность и многопоточность). SMP (Symmetric Multiprocessing) и DSM (Distributed Shared Memory)-системы. Процессы и нити. Модель общей памяти. Стандарт POSIX (Portable Operating System Interface for UNIX) для создания параллельных программ для мультипроцессоров.
-
Лекция 2
1 час 57 минут
OpenMP - модель параллелизма по управлению
Выполнение OpenMP-программы (Fork and Join Model). Модель памяти. Понятие консистентности памяти. Консистентность памяти в OpenMP (weak ordering). Классы переменных (клаузы SHARED, PRIVATE; директива THREADPRIVATE).
-
Тест 1
15 минут
-
Лекция 3
1 час 58 минут
Основные понятия
Директивы и клаузы. Понятие структурного блока. Компиляция OpenMP-программы. Параллельная область (директива PARALLEL). Понятие задачи (директива TASK).
-
Тест 2
15 минут
-
Лекция 4
1 час 30 минут
Конструкции распределения работы
Распределение витков циклов. Циклы с зависимостью по данным. Организация конвейерного выполнения для циклов с зависимостью по данным. Распределение нескольких структурных блоков между нитями (директива SECTION). Редукционные операторы (клауза REDUCTION). Выполнение структурного блока одной нитью (директива SINGLE). Распределение операторов одного структурного блока между нитями (директива WORKSHARE). Копирование значений приватных переменных (клаузы FIRSTPRIVATE, LASTPRIVATE, COPYIN, COPYPRIVATE).
-
Тест 3
15 минут
-
Лекция 5
1 час 40 минут
-
Тест 4
15 минут
-
Лекция 6
1 час 55 минут
-
Тест 5
15 минут
-
Лекция 7
1 час 54 минуты
Наиболее часто встречаемые ошибки в OpenMP-программах. Функциональная отладка OpenMP-программ
Создание вложенной параллельной области. Распределение витков тесно-вложенных циклов (с использованием вложенных параллельных областей и клаузы COLLAPSE). Задание количества нитей для вложенной параллельной области. Задание/опрос максимального уровня вложенности для параллельных областей. Задание максимального количества создаваемых нитей (переменная OMP_THREAD_LIMIT).
-
Тест 6
15 минут
-
Лекция 8
1 час 52 минуты
Отладка эффективности OpenMP-программ
Стратегии распределения витков цикла между нитями (клауза SCHEDULE). Отмена барьерной синхронизации по окончании выполнения цикла (клауза NOWAIT). Локализация данных. Задание поведения нитей во время ожидания (переменная OMP_WAIT_POLICY). Оптимизация OpenMP-программы при помощи Intel Thread Profiler.
-
Тест 7
15 минут
-
Лекция 9
2 часа 7 минут
Использование OpenMP на кластере
Технология Intel Cluster OpenMP. Программная реализация DSM. Директива SHARABLE. Гибридная модель параллельного программирования MPI/OpenMP.
-
Тест 8
15 минут
-
5 часов
-
Андрей Яндуганов
Андрей Яндуганов

Здравствуйте. Сейчас я прохожу данный курс, и пришел к выводу, что без практики толку будет мало. Собственно, хотелось бы получить какие-либо задания для самостоятельной работы, которые мельком упоминаются в этом курсе, но нет ни слова о том, что это за задачи и где их брать.

Светлана Токаревская
Светлана Токаревская

Добрый день! Пару дней назад прошла тест 1 по курсу (с принятием результатов). А сегодня нет информации об этом! Как так?

Елена Сидорова
Елена Сидорова
Россия, Чебоксары, Чувашский государственный университет им. И.Н. Ульянова, 2005
Владимир Старостин
Владимир Старостин
Россия, Москва, 179, 1975