Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2


MPI_Recv. Тем самым, завершение функции MPI_Send



Pdf көрінісі
бет11/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   7   8   9   10   11   12   13   14   ...   53
ParProg MPI OpenMP

MPI_Recv. Тем самым, завершение функции MPI_Send означает лишь, 
что операция передачи начала выполняться и пересылка сообщения рано 
или поздно будет выполнена. 
Чтобы расширить возможности передачи сообщений, в MPI введены 
дополнительные три процедуры. Все параметры у этих процедур такие же, 
как и у MPI_Send, однако у каждой из них есть своя особенность. 
MPI предоставляет следующие модификации процедуры передачи 
данных с блокировкой MPI_Send
 
MPI_BSend – передача сообщения с буферизацией. Если прием 
посылаемого сообщения еще не был инициализирован процессом-
получателем, то сообщение будет записано в специальный буфер, и 
произойдет немедленный возврат из процедуры. Выполнение данной 
процедуры никак не зависит от соответствующего вызова процедуры 
приема сообщения. Тем не менее, процедура может вернуть код ошибки, 
если места под буфер недостаточно. О выделении массива для 
буферизации должен заботиться пользователь. 
 
MPI_SSend – передача сообщений с синхронизацией. Выход из 
данной процедуры произойдет только тогда, когда прием посылаемого 
сообщения будет инициализирован процессом-получателем. Таким 
образом, завершение передачи с синхронизацией говорит не только о 
возможности повторного использования буфера посылки, но и о 


16 
гарантированном достижении процессом-получателем точки приема 
сообщения в программе. Использование передачи сообщений с 
синхронизацией может замедлить выполнение программы, но позволяет 
избежать наличия в системе большого количества не принятых 
буферизованных сообщений. 
 
MPI_RSend – передача сообщений по готовности. Данной 
процедурой можно воспользоваться только в том случае, если процесс-
получатель уже инициировал прием сообщения. В противном случае 
вызов процедуры является ошибочным и результат ее выполнения не 
определен. Гарантировать инициализацию приема сообщения перед 
вызовом процедуры MPI_RSend можно с помощью операций, 
осуществляющих явную или неявную синхронизацию процессов 
(например, MPI_Barrier или MPI_SSend). Во многих реализациях 
процедура сокращает протокол взаимодействия между отправителем и 
получателем, уменьшая накладные расходы на организацию передачи 
данных. 
Для приема сообщения процесс-получатель должен выполнить 
функцию: 


Достарыңызбен бөлісу:
1   ...   7   8   9   10   11   12   13   14   ...   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет