- Технологии параллельного программирования. Лекция 3
- 1. Технологии параллельного программирования.
- 2. Содержание
- 3. Критерии выбора технологии
- 4. Классификация технологий
- 5. Параллельные расширения
- 6. Язык HPF (High Performance FORTRAN)
- 7. Параллельные языки
- 8. Интерфейсы параллельного программирования
- 9. Специализированные параллельные библиотеки
- 10. Инструментальные системы разработки
- 11. Инструментальная система CODE
- 12. Средства автоматического распараллеливания
- 13. Пакет V-Ray
- 14. V-Ray: граф вызовов программы
- 15. V-Ray: граф вложенности циклов
- 16. V-Ray: граф использования общей памяти
- 17. Распараллеливающие компиляторы
- 18. Распараллеливающие компиляторы
- 19. Специализированные прикладные пакеты
- 20. Пакеты ANSYS и CFX: расчет напряжения трубы
- 1.2. Классификация моделей параллельного программирования
Технологии параллельного программирования. Лекция 3
1. Технологии параллельного программирования.
2. Содержание
3. Критерии выбора технологии
14.04.2022
Возможность создания эффективных
программ
Возможность быстрого создания
программ
Возможность сохранения
эффективности созданных программ
при их переносе
Т.Ю.Лымарь
3
4. Классификация технологий
14.04.2022
Параллельные расширения последовательных
языков программирования
Параллельные языки программирования
Высокоуровневые коммуникационные библиотеки
и интерфейсы (API)
Специализированные параллельные библиотеки
Инструментальные системы, облегчающих
разработку параллельных программ
Средства автоматического распараллеливания
последовательных программ
Специализированные прикладные пакеты
Т.Ю.Лымарь
4
5. Параллельные расширения
Дополнение имеющегося языка
последовательного программирования
параллельными конструкциями
– Параллельные расширения и диалекты языка
Fortran
Fortran-DVM, Cray MPP Fortran, F—, Fortran 90/95,
Fortran D95, Fortran M, Fx, HPF, Opus, Vienna Fortran и
др.
– Параллельные расширения и диалекты языков
C/C++
14.04.2022
C-DVM, A++/P++, CC++, Charm/Charm++, Cilk, HPC,
HPC++, Maisie, Mentat, mpC, MPC++, Parsec, pC++,
sC++, uC++ и др.
Т.Ю.Лымарь
5
6. Язык HPF (High Performance FORTRAN)
7. Параллельные языки
Параллельные языки и расширения
– НОРМА, ABCL, Adl, Ada, Concurrent Clean,
MC#, Erlang, Linda, Modula-3, NESL,
Occam, Orca, Parallaxis, Phantom, Sisal,
SR, ZPL и др.
14.04.2022
Т.Ю.Лымарь
7
8. Интерфейсы параллельного программирования
Программирование на стандартных и широко
распространенных языках программирования с
использованием высокоуровневых
коммуникационных библиотек и интерфейсов
(API) для организации межпроцессного
взаимодействия.
Коммуникационные библиотеки и интерфейсы
– ACE, ARCH, BIP, BLACS, BSPlib, CVM, Counterpoint, FM,
Gala, GA, HPVM, ICC, JIAJIA, KELP, LPARX, MPI, MPL,
OOMPI, OpenMP, P4, Para++, Phosphorus, PVM, Quarks,
ROMIO, ShMem, SVMlib, TOOPS, Treadmarks
14.04.2022
Т.Ю.Лымарь
8
9. Специализированные параллельные библиотеки
Библиотеки заранее распараллеленных процедур
для решения различных научно-технических
задач (линейная алгебра, сеточные методы,
методы Монте-Карло, генетические алгоритмы,
рендеринг изображений, …)
– ATLAS, Aztec, BlockSolve95, Distributed Parallelization at
CWP, DOUG, GALOPPS, JOSTLE, NAMD, P-Sparslib, PIM,
ParMETIS, PARPACK, PBLAS, PETSc, PGAPack, PLAPACK,
ScaLAPACK, SPRNG и др.
14.04.2022
Т.Ю.Лымарь
9
10. Инструментальные системы разработки
Интегрированные среды
прототипирования, разработки и
отладки параллельных программ
– CODE, HeNCE, GRADE, TRAPPER,
EDPEPPS, Reactor, DEEP, Converse и др.
14.04.2022
Т.Ю.Лымарь
10
11. Инструментальная система CODE
Параллельная
программа
представляется в
виде графа,
вершинами которого
являются
последовательные
участки, а дуги
соответствуют
пересылкам данных.
Последовательные
участки могут быть
написаны на любом
языке, для
пересылок
используется PVM
или MPI.
14.04.2022
Т.Ю.Лымарь
11
12. Средства автоматического распараллеливания
Средства распознавания параллелизма в
алгоритмах, средства автоматического и
полуавтоматического распараллеливания
последовательных программ
– BERT 77, FORGE, KAP, PIPS, VAST, V-Ray.
14.04.2022
Т.Ю.Лымарь
12
13. Пакет V-Ray
V-Ray – комплекс инструментальных средств,
направленных на автоматизацию создания и
оптимизацию параллельных Fortran-программ для
современных суперкомпьютерных систем. Разработка
НИВЦ МГУ.
Основные возможности:
– Макроанализ – граф вызовов (порядок вызова процедур
проекта), граф вложенности циклов в процедурах, граф
использования общей памяти и др.
– Микроанализ – иерархический граф управления,
определение параллельных циклов, и др.
14.04.2022
Т.Ю.Лымарь
13
14. V-Ray: граф вызовов программы
15. V-Ray: граф вложенности циклов
16. V-Ray: граф использования общей памяти
17. Распараллеливающие компиляторы
do 10 i=1, n
do 50 j=1, n
A(i+j)=A(2*n-i-j+1)*q+p
do 10 i=1, n
do 20 j=1, n-i
A(i+j)=A(2*n-i-j+1)*q+p
do 30 j=n-i+1, n
A(i+j)=A(2*n-i-j+1)*q+p
14.04.2022
Т.Ю.Лымарь
17
18. Распараллеливающие компиляторы
19. Специализированные прикладные пакеты
Специализированные прикладные пакеты,
работающие на параллельных вычислительных
платформах
– Задачи инженерного анализа, прочности, теплофизики,
деформации, упругости, пластичности,
электромагнетизма
ANSYS, MSC.NASTRAN, ABAQUS, LS-DYNA
– Задачи аэро- и гидродинамики, механики жидкостей и
газов, горения и детонации
CFX, FLUENT, STAR-CD, FLOWVISION, FLOW-3D, GDT
– Задачи акустического анализа
14.04.2022
LMS Virtual Lab. Acoustic, COMET/Acoustics
Т.Ю.Лымарь
19
20. Пакеты ANSYS и CFX: расчет напряжения трубы
Создание геометрии модели
(ANSYS)
Создание сетки (ANSYS)
Расчет тепловых нагрузок (CFX)
14.04.2022
Настройка тепловых
напряжений (ANSYS)
Расчет напряжения от температуры (ANSYS)
Т.Ю.Лымарь
20
1.2. Классификация моделей параллельного программирования
Рассмотрим модели параллельного программирования с разных точек зрения.
- С точки зрения доступа к разделяемым данным и синхронизации процессов. В настоящее время в области научно-технических вычислений превалируют три модели параллельного программирования: модель передачи сообщений, модель с общей памятью и модель параллелизма по данным [4]. На рис. 1.2 приведена общая схема такой классификации.
Рис.1.2. Классификация моделей параллельного программирования с точки зрения доступа к данным и синхронизации процессов
- С точки зрения построения ветвей параллельного алгоритма. MPMD – модель вычислений (Multiple program – Multiple Data). Параллельная программа представляет собой совокупность автономных процессов, функционирующих под управлением своих собственных программ и взаимодействующих посредством стандартного набора библиотечных процедур для передачи и приема сообщений. SPMD – модель вычислений (Single program – Multiple Data). Все процессы исполняют в общем случае различные ветви одной и той же программы. Этот подход обусловлен тем обстоятельством, что задача может быть достаточно естественным образом разбита на подзадачи, решаемые по одному алгоритму. Исходные данные задачи распределяются по процессам (ветвям параллельного алгоритма), а алгоритм является одним и тем же во всех процессах, но действия этого алгоритма распределяются в соответствии с имеющимися в этих процессах данными. Распределение действий алгоритма заключается, например, в присвоении разных значений переменным одних и тех же циклов в разных ветвях, либо в исполнении в разных ветвях разного количества итераций одних и тех же циклов и т.п. Другими словами, процесс в каждой ветви следует различными путями выполнения на той же самой программе. На практике чаще всего встречается эта модель программирования.
- С точки зрения размеров (по объему и времени) обрабатываемых параллельных блоков. Это методы крупнозернистого, среднезернистого и мелкозернистого распараллеливания [2, 4].
В модели передачи сообщений каждый процесс имеет собственное локальное адресное пространство. Обработка общих данных и синхронизация осуществляется посредством передачи сообщений. В рамках этой модели параллельного программирования реализуются обе подмодели с точки зрения построения ветвей параллельной программы: MPMD-модель вычислений и SPMD-модель вычислений. Для параллельных систем с передачей сообщений оптимальное соотношение между вычислениями и коммуникациями обеспечивают методы крупнозернистого распараллеливания, когда параллельные алгоритмы строятся из крупных и редко взаимодействующих блоков. Многие задачи линейной алгебры, задачи, решаемые сеточными методами, достаточно эффективно распараллеливаются крупнозернистыми методами [4]. Самой распространенной системой параллельного программирования, поддерживающей данную модель, является MPI. В модели с общей памятью процессы разделяют общее адресное пространство. Так как нет ограничений на использование общих данных, то необходимо явно их специфицировать и упорядочить доступ к ним с помощью средств синхронизации. Поскольку в этой модели нет коммуникаций, как в модели передачи сообщений, сдерживающих скорость обработки данных, то эта модель в большей степени относится к среднезернистой модели программирования – в этой модели параллельные процессы могут строиться из небольших блоков. В рамках модели с общей памятью так же возможны обе подмодели с точки зрения построения ветвей параллельной программы. Обобщение и стандартизация моделей с общей памятью привели к созданию стандарта системы параллельного программирования OpenMP. В модели параллелизма по данным отсутствует понятие процесса и, как следствие, явная передача сообщений или явная синхронизация. В этой модели данные последовательной программы распределяются по узлам (процессорам) вычислительной системы. Последовательная программа преобразуется компилятором либо в модель передачи сообщений, либо в модель с общей памятью. В рамках данной модели параллельного программирования реализуются обе подмодели с точки зрения построения ветвей параллельной программы. Эта модель реализуется методом крупнозернистого распараллеливания [4]. В настоящей работе выбрана модель передачи сообщений, с точки зрения построения ветвей параллельной программы использована SPMD-модель методом крупнозернистого распараллеливания.
28.06.2014 2.47 Mб 36 Исследование средств автоматизации подготовки текстов к публикации в Интернете (магистерская диссертация).docx
28.06.2014 43.01 Кб 2 Программа конференции Прикладная информатика и математическое моделирование.xls