Параллельное программирование: MPI, OpenMP, кластеры GNU/Linux

Предисловие (В. А. Садовничий)
5
Введение
10
1. Порядок работы на вычислительном кластере под управлением ОС
GNU/LINUX
14
1.1. Порядок работы на кластере под управлением ОС GNU/Linux
14
1.2. Операционная система GNU/Linux
15
1.2.1. Интерфейс ОС GNU/Linux
15
1.2.2. Некоторые команды GNU/Linux
16
1.2.3. Работа с каталогами
16
1.2.4. Работа с файлами
16
1.2.5. Другие полезные команды
17
1.2.6. Редактирование файлов
18
1.3. Компилирование последовательных программ (Fortran/C/C++)
19
1.4. Создание параллельной программы с использованием MPI
20
1.5. Запуск параллельной МР1-программы
20
2. Современные компиляторы программ. Компиляторы INTEL
21
2.1. Общие сведения
21
2.2. Совместное использование модулей на Фортране и Си
23
2.3. Основные опции компиляторов
23
2.4. Технологии ОреnМР
25
2.4.1. Основные директивы ОреnМР
26
2.4.2. Runtime-процедуры и переменные окружения
31
2.4.3. Переменные окружения
32
2.4.4. Процедуры для контроля/запроса параметров среды исполнения
32
2.4.5. Процедуры для синхронизации на базе замков
33
2.4.6. Примеры
34
2.5. Результаты применения ОреnМР на многоядерных системах
36
2.6. Intel Math Kernel Library
38
3. Параллельное программирование с использованием стандарта MPI 42
3.1. Основные понятия MPI
42
3.2. Начала MPI и программа 'Hello World'
43
3.3. Синтаксис базовых функций MPI
46
3.4. Некоторые функции коллективного взаимодействия процессов
49
3.5. Другие возможности MPI
50
3.6. Примеры параллельных MPI-программ на языке FORTRAN
51
3.6.1. Идентификация процессов
51
3.6.2. Коммуникационные операции между двумя процессами
53
3.6.3. Вычисление определенного интеграла
55
3.7. Задания
65
4. Вычисление кратных интегралов
69
4.1. Метод Монте-Карло
69
4.2. Параллельная программа расчета двойного интеграла методом Монте-Карло
69
4.3. Метод повторного применения квадратурных формул
71
4.4. Параллельная программа расчета двойного интеграла методом повторного
применения квадратурной формулы трапеции
72
4.5. Задания
76
5. Матричные вычисления
79
5.1. Способы повышения производительности умножения матриц
79
5.2. Распараллеливание операции умножения матриц
84
5.3. Задания
92
6. Системы линейных алгебраических уравнений
95
6.1. Решение СЛАУ методом Гаусса
95
6.2. Программа решения СЛАУ методом Гаусса
98
6.3. Метод циклической редукции
102
6.4. Итерационные методы решения систем линейных уравнений
106
6.5. MPI-программа решения СЛАУ методом Якоби
110
6.6. OpenMP-программа решения СЛАУ методом Якоби
115
6.7. Оценка ускорения параллельной программы решения СЛАУ методом Якоби
119
6.8. Задания
120
7. Параллельные алгоритмы решения задачи коши для системы ОДУ
124
7.1. Постановка задачи
124
7.2. Одношаговые методы Рунге-Кутты четвертого порядка
124
7.3. Параллельная реализация метода Рунге-Кутты четвертого порядка
125
7.4. Многошаговые методы Адамса. Схема «предиктор-корректор»
127
7.5. Параллельный алгоритм многошагового метода Адамса. Схема «предикторкорректор»
129
7.6. Задания
137
8. Пакет PETSc для решения уравнений в частных производных
140
8.1. Компиляция и запуск PETSc-программ
141
8.2. Структура PETSc-программ
142
8.3. Векторы
144
8.3.1. Работа с векторами
144
8.3.2. Основные векторные операции
146
8.3.3. Пример
147
8.4. Матрицы
149
8.4.1. Работа с матрицами
149
8.4.2. Пример
154
8.5. Методы решений систем линейных уравнений
156
8.6. Пример
158
8.7. Задания
162
9. Решение задач нестационарной теплопроводности с помощью явных и
неявных разностных схем
167
9.1. Явная схема
170
9.1.1. Одномерная декомпозиция
171
9.1.2. Двумерная декомпозиция
173
9.2. Неявная схема
175
9.2.1. Метод сопряженных градиентов
177
9.3. Задания
190
Литература
194