Point-to-point взаимодействия

 

Основной механизм связи между процессами в MPI – передача данных между парой взаимодействующих процессов: одной – посылающей, другой – получающей. Эта связь называется “point-to-point”.

Имеются следующие базовые типы передающих и принимающих point-to-point операций: блокированные и неблокированные. Каждая передающая операция из этих типов имеет дополнительные подтипы: буферизированный, синхронный и по состоянию готовности. Принимающих операций только две: блокированная и неблокированная. Каждая принимающая функция из этих типов совместима со всеми передающими функциями и наоборот.

 

Блокированная передача данных.

 

Блокированная передающая функция асинхронна, т.е. возвращает управление после передачи параметров в систему. Но будет заблокирована при доступе (по записи или чтению) к посылаемому массиву данных до тех пор пока данные сообщения не будут безопасно сохранены в промежуточном буфере системы и посылающийся буфер не будет снова свободен к доступу (чтению, записи данных). относительно соответствующей принимающей функции(в принимающей стороне) в данном случае нет никаких предложений, и завершение посылающей функции не обязательно подразумевает, что соответствующая получающая функция стартовала. И нет никакого предположения в прикладной программе относительно того, буферизируются ли посылаемые данные или нет. (посылаемые данные буферизируются в системном буфере программными средствами системы) Семантика завершения функции не локальная(т.е. зависима от выполнения других процессов). Имеется несколько версий блокированных передающих функций: стандартная (MPI_Send), буферизированная(MPI_Bsend), и по состоянию готовности(MPI_Rsend)