Введение в практику разработки параллельных программ в стандарте MPI. Баканов В.М - 23 стр.

UptoLike

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

- 23 -
процессорный элемент, на котором выполняется процесс, выполнивший
MPI_Send.
Имеются следующие модификации процедуры передачи данных с блоки-
ровкой MPI_Send:
MPI_Вsend - передача сообщения с буферизацией. Если прием по-
сылаемого сообщения еще не был инициализирован процессом-
получателем, то сообщение будет записано в специальный буфер, и
произойдет немедленный возврат из процедуры. Выполнение этой про-
цедуры никоим образом не зависит от соответствующего вызова проце-
дуры приема сообщения. Тем не менее процедура может вернуть
код ошибки, если места под буфер недостаточно (о выделении массива для
буферизации должен озаботиться пользователь).
MPI_Ssend - передача сообщения с синхронизацией. Выход из этой проце-
дуры произойдет только тогда, когда прием посылаемого сообще-
ния будет инициализирован процессом-получателем. Таким образом,
завершение передачи с синхронизацией говорит не только о возможности
повторного использования буфера посылки, но и о гарантированном
достижении процессом-получателем точки приема сообщения в про-
грамме. Использование передачи сообщений с синхронизацией
может замедлить выполнение программы, но позволяет избежать
наличия в системе большого количества не принятых буферизован-
ных сообщений.
MPI_Rsend - передача сообщения по готовности. Этой процедурой можно
пользоваться только в том случае, если процесс-получатель уже иницииро-
вал прием сообщения. В противном случае вызов процедуры является
ошибочным и результат ее выполнения не определен. Гарантировать
инициализацию приема сообщения перед вызовом процедуры
MPI_Rsend можно с помощью операций, осуществляющих явную
или неявную синхронизацию процессов (например, MPI_Barrier или
MPI_Ssend). Во многих реализациях процедура MPI_Rsend сокращает
протокол взаимодействия между отправителем и получателем,
уменьшая накладные расходы на организацию передачи данных.
В MPI не используются привычные для C типы данных (
int, char и др.),
вместо них удобно применять определенные для данной платформы констан-
ты
MPI_INT, MPI_CHAR и т.д. (см. табл.1).
Таблица 1.
Предопределенные в MPI константы типов данных.
Константы MPI Соответствующий тип в C
MPI_INT signed int
MPI_UNSIGNED unsigned int
MPI_SHORT signed int
MPI_LONG signed long int
процессорный элемент, на котором выполняется процесс, выполнивший
MPI_Send.
   Имеются следующие модификации процедуры передачи данных с блоки-
ровкой MPI_Send:

• MPI_Вsend - передача сообщения с буферизацией. Если прием по-
  сылаемого сообщения еще не был инициализирован процессом-
  получателем, то сообщение будет записано в специальный буфер, и
  произойдет немедленный возврат из процедуры. Выполнение этой про-
  цедуры никоим образом не зависит от соответствующего вызова проце-
  дуры приема сообщения. Тем не менее процедура может вернуть
  код ошибки, если места под буфер недостаточно (о выделении массива для
  буферизации должен озаботиться пользователь).
• MPI_Ssend - передача сообщения с синхронизацией. Выход из этой проце-
  дуры произойдет только тогда, когда прием посылаемого сообще-
  ния будет инициализирован процессом-получателем. Таким образом,
  завершение передачи с синхронизацией говорит не только о возможности
  повторного использования буфера посылки, но и о гарантированном
  достижении процессом-получателем точки приема сообщения в про-
  грамме. Использование передачи сообщений с синхронизацией
  может замедлить выполнение программы, но позволяет избежать
  наличия в системе большого количества не принятых буферизован-
  ных сообщений.
• MPI_Rsend - передача сообщения по готовности. Этой процедурой можно
  пользоваться только в том случае, если процесс-получатель уже иницииро-
  вал прием сообщения. В противном случае вызов процедуры является
  ошибочным и результат ее выполнения не определен. Гарантировать
  инициализацию приема сообщения перед вызовом                 процедуры
  MPI_Rsend   можно с помощью операций, осуществляющих явную
  или неявную синхронизацию процессов (например, MPI_Barrier или
  MPI_Ssend). Во многих реализациях процедура MPI_Rsend сокращает
  протокол    взаимодействия между отправителем         и    получателем,
  уменьшая накладные расходы на организацию передачи данных.

  В MPI не используются привычные для C типы данных (int, char и др.),
вместо них удобно применять определенные для данной платформы констан-
ты MPI_INT, MPI_CHAR и т.д. (см. табл.1).

  Таблица 1.— Предопределенные в MPI константы типов данных.

           Константы MPI                     Соответствующий тип в C
       MPI_INT                                signed int
       MPI_UNSIGNED                           unsigned int
       MPI_SHORT                              signed int
       MPI_LONG                               signed long int
                                    - 23 -