Введение
1. Обзор средств разработки параллельных программ для систем с общей памятью 15
1.1. Особенности разработки параллельных программ для систем с общей памятью 15
1.2. Технологии параллельного программирования для систем с общей памятью 16
1.3. Проблемы, возникающие при распараллеливании программ для систем с общей памятью 1.3.1. Оптимизация последовательной части программы 18
1.3.2. Отладка параллельных программ 19
1.3.3. Зависимости по данным 20
1.3.4. Тестирование корректности и производительности
1.3.5 Балансировка нагрузки 22
1.3.6 Выбор технологии параллельного программирования 22
1.4. Обзор инструментов разработки параллельных программ для систем с общей
памятью 24
1.4.1. Среда программирования SMP superscalar 24
1.4.2. Интерфейс Performance API 25
1.4.3. Инструмент для анализа и оптимизации двоичных кодов MAQAO 28
1.4.4. Инструмент анализа производительности Periscope 30
1.4.5. Инструментальная утилита OPARI2 31
1.4.6. Профилировщик Scalasca 32
1.5. Обзор автоматических и автоматизированных систем для создания параллельных программ 33
1.5.1. Среда разработки параллельных программ DVM-система 33
1.5.2. Среда автоматической разработки параллельных программ OpenTS 35
1.5.3. Система программирования mpC 38
1.5.4. Среда для автоматизации разработки MPI программ PARUS 41
1.5.5. Оптимизирующая распараллеливающая система 43
1.6. Метрики и законы параллельного программирования 46
1.6.1. Базовые метрики параллельного программирования 46
1.6.2. Закон Амдала 47
1.6.3. Закон Густавсона-Барсиса 48
1.6.4. Закон Сан-Ная 49
1.6.5. Метрика Карп-Флатта 50
1.6.6. Метрика изоэффективности 50
1.7. Выводы 51
2. Разработка методов и алгоритмов выбора технологии параллельного программирования для систем с общей памятью 54
2.1. Метрика реальной эффективности 54
2.2. Метод выбора технологии параллельного программирования 54
2.3. Алгоритм классификации циклов 60
2.4. Выводы 68
3. Разработка программной библиотеки параллельных шаблонов для реализации алгоритмов на вычислительных системах с общей памятью 71
3.1. Структура библиотеки 71
3.2. Шаблоны распараллеливания 73
3.3. Реализация шаблона «разделяй и властвуй» 76
3.3.1. Пример распараллеливания для шаблона «разделяй и властвуй» 78
3.4. Реализация шаблона, основанного на задачах 81
3.4.1. Пример распараллеливания для шаблона, основанного на задачах 86
3.5. Выводы 88
4. Применение библиотеки для разработки параллельных программ 91
4.1. Распараллеливание пакета многотельной динамики ФРУНД 91
4.2. Моделирование динамики электронного потока 95
4.3 Распараллеливание решения прямой задачи электростатики 99
4.4. Разработка ядра геометрического моделирования 103
4.4.1. Построение тела по траектории 104
4.4.2. Операция деформации тел 107
4.4.3. Верификация топологии и геометрии моделей 108
4.4.4. Операция построения тела по набору сечений 110
4.4.5. Построение дискового сглаживания 114
4.4.6. Выводы по распараллеливанию ядра геометрического моделирования 117
4.5. Выводы 119
Заключение 121
Список использованных источников 123
Приложение а. Акты внедрения результатов диссертации


