Параллельные вычисления. Баканов В.М. - 102 стр.

UptoLike

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

- 102 -
4.2 Системы параллельного программирования
на основе обмена сообщениями
Вышеописанные системы разработки параллельных программ, несмотря на
требования явного описания распределения вычислений и данных по процес-
сорам, все же возлагают напараллельныйкомпилятор работу по реализации
этих описаний. В некоторых случаях бывает полезным иметь возможность
самостоятельного максимально полного управления процессом обработки
информации (включая
распределение данных и вычислений и обмен сообще-
ниями между ветвями программы).
Модель программирования MPI (Message Passing Interface, 1994,
http://mpiforum.org
) основана на передаче сообщений. Сообщение состоит из
блока (блоков) передаваемых данных и дополнительной информации (тип
передаваемых данных, идентификатор сообщения, номер процесса-
получателя и др.).
MPI иногда называютассемблерным уровнем в параллельном програм-
мировании, основывая это необходимостью максимально подробного описа-
ния всех необходимых операций обменов данными между частями програм-
мы, выполняющимися
на отдельных процессорах; при этом распределение
данных и вычислений полностью возлагается на программиста и выполняет-
ся средствами базового языка программирования (что очень непросто, по-
этому и применяются синтетические подходынапример, вышеупомянутый
OpenMP+MPI). Возможности MPI реализованы как набор (размещенных в
соответствующей библиотеке) MPI-функций (существует интерфейс с Fortran
и C/C++); появившийся в 1997 г. проект стандарта MPI-2
существенно рас-
ширяет возможности MPI (напр., динамическое порождение и уничтожение
процессов; при этом для MPI-1 диаграмма процессов соответствует рис.3б, а
для MPI-2 – рис.3в). В настоящее время существуют две основные реализа-
ции MPI – MPICH (MPI & Chameleon,
http://www-unix.mcs.anl.gov/mpi/mpich
) и
LAM (Local Area Machine,
http://www.lam-mpi.org
). Существуют сведения, что
MPI-2 реализован в системе программирования векторно-параллельной сис-
темы Earth Simulator.
Вообще говоря, для написания подавляющего большинства программ дос-
таточно 6-ти функций интерфейса MPI:
MPI_Init
- инициализация MPI-библиотеки
MPI_Comm_size
- определение числа процессов
MPI_Comm_rank
- определение процессом собственного номера
MPI_Send
- посылка сообщения
MPI_Recv
- получение сообщения
MPI_Finalize
- завершение программы MPI
                                   - 102 -


 4.2 Системы параллельного программирования
     на основе обмена сообщениями

   Вышеописанные системы разработки параллельных программ, несмотря на
требования явного описания распределения вычислений и данных по процес-
сорам, все же возлагают на ‘параллельный’ компилятор работу по реализации
этих описаний. В некоторых случаях бывает полезным иметь возможность
самостоятельного максимально полного управления процессом обработки
информации (включая распределение данных и вычислений и обмен сообще-
ниями между ветвями программы).
   Модель программирования MPI (Message Passing Interface, 1994,
http://mpiforum.org) основана на передаче сообщений. Сообщение состоит из
блока (блоков) передаваемых данных и дополнительной информации (тип
передаваемых данных, идентификатор сообщения, номер процесса-
получателя и др.).
   MPI иногда называют ‘ассемблерным уровнем’ в параллельном програм-
мировании, основывая это необходимостью максимально подробного описа-
ния всех необходимых операций обменов данными между частями програм-
мы, выполняющимися на отдельных процессорах; при этом распределение
данных и вычислений полностью возлагается на программиста и выполняет-
ся средствами базового языка программирования (что очень непросто, по-
этому и применяются синтетические подходы – например, вышеупомянутый
OpenMP+MPI). Возможности MPI реализованы как набор (размещенных в
соответствующей библиотеке) MPI-функций (существует интерфейс с Fortran
и C/C++); появившийся в 1997 г. проект стандарта MPI-2 существенно рас-
ширяет возможности MPI (напр., динамическое порождение и уничтожение
процессов; при этом для MPI-1 диаграмма процессов соответствует рис.3б, а
для MPI-2 – рис.3в). В настоящее время существуют две основные реализа-
ции MPI – MPICH (MPI & Chameleon, http://www-unix.mcs.anl.gov/mpi/mpich) и
LAM (Local Area Machine, http://www.lam-mpi.org). Существуют сведения, что
MPI-2 реализован в системе программирования векторно-параллельной сис-
темы Earth Simulator.
   Вообще говоря, для написания подавляющего большинства программ дос-
таточно 6-ти функций интерфейса MPI:

   MPI_Init             - инициализация MPI-библиотеки
   MPI_Comm_size        - определение числа процессов
   MPI_Comm_rank        - определение процессом собственного номера
   MPI_Send             - посылка сообщения
   MPI_Recv             - получение сообщения
   MPI_Finalize         - завершение программы MPI