1 1 Общая организация MPI

Если сформулировать коротко, MPI - это библиотека функций, обеспечивающая взаимодействие параллельных процессов с помощью механизма передачи сообщений. Это достаточно объемная и сложная библиотека, состоящая примерно из 130 функций, в число которых входят:

  • функции инициализации и закрытия MPI процессов;
  • функции, реализующие коммуникационные операции типа точка-точка;
  • функции, реализующие коллективные операции;
  • функции для работы с группами процессов и коммуникаторами;
  • функции для работы со структурами данных;
  • функции формирования топологии процессов.

Набор функций библиотеки MPI далеко выходит за рамки набора функций, минимально необходимого для поддержки механизма передачи сообщений, в вычислительных задачах малой и средней сложности. Однако сложность этой библиотеки не должна пугать пользователей, поскольку, в конечном итоге, все это множество функций предназначено для облегчения разработки эффективных параллельных программ. В конце концов, пользователю принадлежит право самому решать, какие средства из предоставляемого арсенала использовать, а какие нет. В принципе, любая параллельная программа может быть написана с использованием всего 6 MPI функций, а достаточно полную и удобную среду программирования составляет набор из 24 функций.

Каждая из MPI функций характеризуется способом выполнения:

  1. Локальная функция - выполняется внутри вызывающего процесса. Ее завершение не требует коммуникаций.
  2. Нелокальная функция - для ее завершения требуется выполнение MPI-процедуры другим процессом.
  3. Глобальная функция - процедуру должны выполнять все процессы группы. Несоблюдение этого условия может приводить к зависанию задачи.
  4. Блокирующая функция - возврат управления из процедуры гарантирует возможность повторного использования параметров, участвующих в вызове. Никаких изменений в состоянии процесса, вызвавшего блокирующий запрос, до выхода из процедуры не может происходить.
  5. Неблокирующая функция - возврат из процедуры происходит немедленно, без ожидания окончания операции и до того, как будет разрешено повторное использование параметров, участвующих в запросе. Завершение неблокирующих операций осуществляется специальными функциями.

В языке FORTRAN большинство MPI-процедур являются подпрограммами (вызываются с помощью оператора CALL), а код ошибки возвращают через дополнительный последний параметр процедуры. Несколько процедур, оформленных в виде функций, код ошибки не возвращают. Не требуется строгого соблюдения регистра символов в именах подпрограмм и именованных констант. Массивы индексируются с 1. Ниже приведено соответствие предопределенных в MPI типов стандартным типам языка FORTRAN.

Тип MPIТип языка FORTRAN
MPI_INTEGERINTEGER
MPI_REALREAL
MPI_DOUBLE_PRECISION  DOUBLE PRECISION
MPI_COMPLEXCOMPLEX
MPI_LOGICALLOGICAL
MPI_CHARACTERCHARACTER(1)
MPI_BYTE 
MPI_PACKED 

Изучение MPI начнем с рассмотрения базового набора из 6 функций, образующих минимально полный набор, достаточный для написания простейших программ.


Copyright © 1998-2011 Юрий Сбитнев