77
MPI_IPROBE (source, tag, comm, flag, status) возвращает flag =
true
, если имеется сообщение, которое может быть получено и кото-
рое соответствует образцу, описанному аргументами
source, tag, и
comm. Вызов соответствует тому же сообщению, которое было бы
получено с помощью вызова
MPI_RECV (..., source, tag, comm,
status
), выполненного на той же точке программы, и возвращает ста-
тус с теми же значениями, которые были бы возвращены
MPI_RECV(). Другими словами, вызов возвращает flag = false и ос-
тавляет статус неопределенным. Если
MPI_IPROBE возвращает flag
= true
, тогда содержание статусного объекта может быть впоследст-
вии получено, как описано в параграфе 3.2.5, чтобы определить ис-
точник, тэг и длину опробованного сообщения. Последующий прием,
выполненный с тем же самым контекстом и тэгом, возвращенным в
status вызовом MPI_IPROBE, будет получать сообщение, которое
соответствует пробе, если после пробы не вмешается какое-либо дру-
гое сообщение. Если принимающий процесс многопоточный, ответст-
венность за выполнение условия возлагается на пользователя.
MPI_PROBE (source, tag, comm, status)
IN source номер источника или MPI_ANY_SOURCE (целое)
IN tag значение тэга или MPI_ANY_TAG (целое)
IN comm коммуникатор (дескриптор)
OUT status статус (статус)
int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)
MPI_PROBE(SOURCE, TAG, COMM, STATUS, IERROR)
INTEGER SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
void MPI::Comm::Probe(int source, int tag, MPI::Status& status) const
MPI_PROBE ведет себя подобно MPI_IPROBE, исключая то, что
функция
MPI_PROBE является блокирующей и заканчивается после
того, как соответствующее сообщение было найдено.
Аргумент source функции MPI_PROBE может быть
MPI_ANY_SOURCE, это позволяет опробовать сообщения из произ-
вольного источника и/или с произвольным тэгом. Однако специфиче-
ский контекст обмена обязан создаваться только при помощи аргу-
мента
comm. Сообщение не обязательно должно быть получено сразу
после опробования, оно может опробоваться несколько раз перед его
получением.
MPI–реализация MPI_PROBE и MPI_IPROBE нуждается в га-
рантии продвижения: если обращение к
MPI_PROBE уже было за-
пущено процессом и посылка, которая соответствует пробе, уже ини