Федеральное агентство по образованию
Нижегородский государственный университет им. Н. И. Лобачевского
Национальный проект «Образование»
Инновационная образовательная программа ННГУ. Образовательно-научный центр
«Информационно-телекоммутационные системы: физические основы
и математическое обеспечение»
В. П. Гергель, А. А. Лабутина
Учебно-образовательный комплекс по методам
параллельного программирования
Учебно-методические материалы по программе повышения
квалификации «Информационные технологии
и компьютерное моделирование в прикладной математике»
Нижний Новгород
2007
Учебно-методические материалы подготовлены в рамках
инновационной образовательной программы ННГУ: Образовательно-
научный центр «Информационно-телекоммуникационные
системы: физические основы и математическое обеспечение»
Гергель В. П. , Лабутина А. А. «Учебно-образовательный комплекс по методам
параллельного программирования». Учебно-методические материалы по программе
повышения квалификации «Информационные технологии и компьютерное
моделирование в прикладной математике». Нижний Новгород, 2007, 138 с. Учебно-методические материалы содержат информацию о принципах разработки
методов параллельных вычислений, подробное описание технологии OpenMP разработки
параллельных программ для систем с общей памятью, а также примеры применения
описанных подходов для распараллеливания алгоритмов умножения матрицы на вектор и
матрицы на матрицу с применением OpenMP. © Гергель В. П. , Лабутина А. А. , 2007
СОДЕРЖАНИЕ
Принципы разработки параллельных методов... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 5
1. Моделирование параллельных программ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . 7
2. Этапы разработки параллельных алгоритмов ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 9
Параллельное программирование с использованием OpenMP ... ... ... ... ... ... ... ... . . 19
1. Основы технологии OpenMP ... ... ...
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 23
Выделение параллельно-выполняемых фрагментов программного кода ... ... ... 26
Распределение вычислительной нагрузки между потоками (распараллеливание
по данным для циклов) ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 30
Управление данными для параллельно-выполняемых потоков ... ... ... ... ... ... ... ... . 37
Организация взаимоисключения при использовании общих переменных ... ... ... 40
Распределение вычислительной нагрузки между потоками (распараллеливание
по задачам при помощи директивы sections)... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . 44
2.