ВУЗ:
Составители:
Рубрика:
- 6 -
Строго говоря, технология MPI подразумевает подход
MPMD (Multiple Pro-
gram
−
Multiple Data: множество программ
−
множество данных), при этом
одновременно (и относительно независимо друг от друга) на различных ВУ
выполняются несколько (базирующихся на различных исходных текстах)
программных ветвей, в определенные промежутки времени обменивающиеся
данными. Однако подобные программы слишком громоздки при написании
(для каждого ВУ требуется отдельный исходной текст), поэтому на практике
применяется
SPMD-подход (Single Program - Multiple Data: одна программа –
множество данных), предполагающий исполнение на различных ВУ логиче-
ски выделенных условными операторами участков идентичного кода. Все
ветви программы запускаются загрузчиком одновременно как процессы
UNIX; количество ветвей фиксировано – согласно стандарту MPI 1.1 в ходе
работы порождение новых ветвей невозможно.
Параллельно выполняющиеся программы обычно не используют привыч-
ного пользователям ОС Windows оконного
интерфейса (вследствие как труд-
ности связывания окон с конкретным экземпляром приложения, так и несу-
щественности использования подобного интерфейса при решении серьезных
счетных задач). Отладка параллельного приложения также существенно от-
личается от таковой обычного последовательного [3].
В дальнейшем будем считать, что параллельное приложение состоит из не-
скольких ветвей
(или процессов, или задач), выполняющихся одновременно
на ВУ; при этом процессы обмениваются друг с другом данными в виде со-
общений (рис.1). Каждое сообщение имеет идентификатор, который позво-
ляет программе и библиотеке связи отличать их друг от друга. В MPI сущест-
вует понятие области связи;
области связи имеют независимую друг от друга
нумерацию процессов (коммуникатор
как раз и определяет область связи).
В общем случае создание параллельной программы включает в себя (ук-
рупненно) две основные стадии:
• Исходно-последовательный алгоритм подвергается декомпозиции (распа-
раллеливанию), т.е. разбивается на независимо работающие ветви; для
взаимодействия в ветви вводятся два типа дополнительных нематематиче-
ских операции: прием (Send) и передача (Receive) данных.
• Распараллеленный алгоритм оформляется в виде программы, в которой
операции приема и передачи записываются в терминах конкретной систе-
мы связи между ветвями (в нашем случае MPI).
Несколько подробнее этот процесс описан в [4], для желающих серьезно
заняться проблемой рекомендуется работа [1].
Т.к. время обмена данными между ветвями намного (на порядки) больше
времени доступа к собственной (локальной) памяти, распределение работы
между процессами должно быть ‘крупнозернистым’ [1]. Типичный размер
этого зерна (гранулы) составляет десятки-сотни тысяч машинных операций
Строго говоря, технология MPI подразумевает подход MPMD (Multiple Pro- gram − Multiple Data: множество программ − множество данных), при этом одновременно (и относительно независимо друг от друга) на различных ВУ выполняются несколько (базирующихся на различных исходных текстах) программных ветвей, в определенные промежутки времени обменивающиеся данными. Однако подобные программы слишком громоздки при написании (для каждого ВУ требуется отдельный исходной текст), поэтому на практике применяется SPMD-подход (Single Program - Multiple Data: одна программа – множество данных), предполагающий исполнение на различных ВУ логиче- ски выделенных условными операторами участков идентичного кода. Все ветви программы запускаются загрузчиком одновременно как процессы UNIX; количество ветвей фиксировано – согласно стандарту MPI 1.1 в ходе работы порождение новых ветвей невозможно. Параллельно выполняющиеся программы обычно не используют привыч- ного пользователям ОС Windows оконного интерфейса (вследствие как труд- ности связывания окон с конкретным экземпляром приложения, так и несу- щественности использования подобного интерфейса при решении серьезных счетных задач). Отладка параллельного приложения также существенно от- личается от таковой обычного последовательного [3]. В дальнейшем будем считать, что параллельное приложение состоит из не- скольких ветвей (или процессов, или задач), выполняющихся одновременно на ВУ; при этом процессы обмениваются друг с другом данными в виде со- общений (рис.1). Каждое сообщение имеет идентификатор, который позво- ляет программе и библиотеке связи отличать их друг от друга. В MPI сущест- вует понятие области связи; области связи имеют независимую друг от друга нумерацию процессов (коммуникатор как раз и определяет область связи). В общем случае создание параллельной программы включает в себя (ук- рупненно) две основные стадии: • Исходно-последовательный алгоритм подвергается декомпозиции (распа- раллеливанию), т.е. разбивается на независимо работающие ветви; для взаимодействия в ветви вводятся два типа дополнительных нематематиче- ских операции: прием (Send) и передача (Receive) данных. • Распараллеленный алгоритм оформляется в виде программы, в которой операции приема и передачи записываются в терминах конкретной систе- мы связи между ветвями (в нашем случае MPI). Несколько подробнее этот процесс описан в [4], для желающих серьезно заняться проблемой рекомендуется работа [1]. Т.к. время обмена данными между ветвями намного (на порядки) больше времени доступа к собственной (локальной) памяти, распределение работы между процессами должно быть ‘крупнозернистым’ [1]. Типичный размер этого зерна (гранулы) составляет десятки-сотни тысяч машинных операций -6-
Страницы
- « первая
- ‹ предыдущая
- …
- 4
- 5
- 6
- 7
- 8
- …
- следующая ›
- последняя »