Неблокированная передача данных.
Неблокированные операции всегда имеют две части: функции передачи параметров системе, к-рые инициируют запрошенное действие и функции «проверки на завершение», к-рые допускают, чтобы прикладная программа обнаружила, закончилось ли запрошенное действие.
Неблокированная функция указывает, что система может начинать копировать данные вне посылающего буфера. После передачи параметров в систему функция возвращает управление. После этого передающий процесс не должен иметь доступ( по записи, а в данном случае и по чтению) к посылающемуся буферу, т.е. система не гарантирует в этом случае сохранность посылаемых данных. Для проверки завершения рассматриваемой операции используются функции MPI_Wait и MPI_Test. Под завершением операции здесь понимается, что данные сообщения были безопасно сохранены в промежуточном буфере системы и посылающийся буфер снова свободен к доступу. Относительно соответсвующей принимающей функции(в принимающей стороне), в данном случае, нет никаких предположений, и завершение посылающей функции не обязательно подразумевает, что соответствующая получающая функция стартовала. И нет никакого предположения в прикладной программе относительно того, буферизируются ли посылаемые данные или нет. (посылаемые данные буферизируются в системном буфере с программными средствами системы.) семантика завершения функции локальная( т.е. не зависима от выполнения других процессов и ее завершение не зависит от вхождения соотв. получающей функции). Имеется несколько версий неблокированных передающих функций:
Стандартная (MPI_Isend), буферизированная(MPI_Ibsend), синхронная(MPI_Issend), и по состоянию готовности(MPI_Irsend).
Дата добавления: 2015-02-03; просмотров: 742;