Параллельное программирование в стандарте MPI. Баканов В.М - 4 стр.

UptoLike

Составители: 

- 4 -
Введение
MPI (Message Passing Interface,
http://www.mpi-forum.org
) является техноло-
гией создания параллельно выполняющихся программ, основанной на пере-
даче сообщений между процессами (сами процессы могут выполняться как
на одном, так и на различных вычислительных узлах). MPI-технология явля-
ется типичным примером императивной (основанной на полном управлении
программистом последовательностью вычислений, распределения данных и
обменов информацией между процессами) технологии создания программ
для параллельного выполнения [1
÷
3, 5].
Значительное число современных систем разработки параллельных про-
грамм основаны на императивности в распределении данных по процессо-
рам; подобной MPI императивностью обладает система DVM (Distributed
Virtual Memory или Distributed Virtual Machine,
http://www.keldysh.ru/dvm
) - в
противоположность системе HPF (Hight Performance Fortran,
http://www.erc.msstate.edu/hpff/home.html
), где программист не предписывает
компилятору конкретного распределения вычислений по процессорам, при
этом существенная часть работ по распараллеливанию вычислений выпол-
няется компилятором [3]. Свободно распространяемым инструментом авто-
матизации создания параллельных MPI-программ является система
HOPМА
(
http://www.keldysh.ru/pages/norma
), позволяющая (на основе специализирован-
ного декларативного языка) синтезировать исходный текст с вызовами MPI
[1,2]; из иных (истинная эффективность неизвестна) можно назвать препро-
цессор пакета
Forge
(
http://www.tc.cornell.edu/UserDoc/Software/PTools/forge
). По-
луавтоматическое распараллеливание достигается введением в состав уни-
версального языка программирования (С или Fortran) дополнительных инст-
рукций для записи параллельных конструкций кода и данных, препроцессор
переводит исходный текст в текст на стандартном языке с вызовами MPI;
примеры: система
mpC
(massively parallel C,
http://www.ispras.ru/~mpc
) и
HPF
(High Performance Fortran,
http://www.crpc.rice.edu/HPFF
).
Формально MPI-подход основан на включении в программные модули вы-
зовов функций специальной библиотеки (заголовочные и библиотечные фай-
лы для языков С/С++ и Fortran) и загрузчика параллельно исполняемого кода
в вычислительные узлы (ВУ). Подобные библиотеки имеются практически
для все платформ, поэтому написанные с использованием технологии MPI
взаимодействия ветвей параллельного приложения программы
независимы
от машинной архитектуры (могут исполняться на однопроцессорных и мно-
гопроцессорных c общей или разделяемой памятью ЭВМ), от расположения
ветвей (выполнение на одном или разных процессорах) и от API (Application
Program Interface) конкретной операционной системы (ОС).
История MPI начинается в 1992 г. созданием стандарта эффективной и пе-
реносимой библиотеки передачи сообщений в Oak Ridge National Laboratory
(Rice University), окончательный
вариант стандарта MPI 1.0 представлен в
1995 г., стандарт MPI-2 опубликован в 1997 г.
Из реализаций MPI известны MPICH (все UNIX-системы и Windows'NT,
                                       -4-

  Введение

   MPI (Message Passing Interface, http://www.mpi-forum.org) является техноло-
гией создания параллельно выполняющихся программ, основанной на пере-
даче сообщений между процессами (сами процессы могут выполняться как
на одном, так и на различных вычислительных узлах). MPI-технология явля-
ется типичным примером императивной (основанной на полном управлении
программистом последовательностью вычислений, распределения данных и
обменов информацией между процессами) технологии создания программ
для параллельного выполнения [1 ÷ 3, 5].
   Значительное число современных систем разработки параллельных про-
грамм основаны на императивности в распределении данных по процессо-
рам; подобной MPI императивностью обладает система DVM (Distributed
Virtual Memory или Distributed Virtual Machine, http://www.keldysh.ru/dvm) - в
противоположность         системе      HPF     (Hight   Performance       Fortran,
http://www.erc.msstate.edu/hpff/home.html), где программист не предписывает
компилятору конкретного распределения вычислений по процессорам, при
этом существенная часть работ по распараллеливанию вычислений выпол-
няется компилятором [3]. Свободно распространяемым инструментом авто-
матизации создания параллельных MPI-программ является система HOPМА
(http://www.keldysh.ru/pages/norma), позволяющая (на основе специализирован-
ного декларативного языка) синтезировать исходный текст с вызовами MPI
[1,2]; из иных (истинная эффективность неизвестна) можно назвать препро-
цессор пакета Forge (http://www.tc.cornell.edu/UserDoc/Software/PTools/forge). По-
луавтоматическое распараллеливание достигается введением в состав уни-
версального языка программирования (С или Fortran) дополнительных инст-
рукций для записи параллельных конструкций кода и данных, препроцессор
‘переводит’ исходный текст в текст на стандартном языке с вызовами MPI;
примеры: система mpC (massively parallel C, http://www.ispras.ru/~mpc) и HPF
(High Performance Fortran, http://www.crpc.rice.edu/HPFF).
   Формально MPI-подход основан на включении в программные модули вы-
зовов функций специальной библиотеки (заголовочные и библиотечные фай-
лы для языков С/С++ и Fortran) и загрузчика параллельно исполняемого кода
в вычислительные узлы (ВУ). Подобные библиотеки имеются практически
для все платформ, поэтому написанные с использованием технологии MPI
взаимодействия ветвей параллельного приложения программы независимы
от машинной архитектуры (могут исполняться на однопроцессорных и мно-
гопроцессорных c общей или разделяемой памятью ЭВМ), от расположения
ветвей (выполнение на одном или разных процессорах) и от API (Application
Program Interface) конкретной операционной системы (ОС).
   История MPI начинается в 1992 г. созданием стандарта эффективной и пе-
реносимой библиотеки передачи сообщений в Oak Ridge National Laboratory
(Rice University), окончательный вариант стандарта MPI 1.0 представлен в
1995 г., стандарт MPI-2 опубликован в 1997 г.
   Из реализаций MPI известны MPICH (все UNIX-системы и Windows'NT,