Здавалка
Главная | Обратная связь

MPI_Probe (source, tag, comm, status)



IN sourceномер источника или MPI_ANY_SOURCE

IN tagзначение тэга или MPI_ANY_TAG

IN commкоммуникатор

OUT statusстатус (статус)

 

Функция MPI_Probeявляется блокирующей и заканчивается после того, как соответствующее сообщение было найдено. Функция MPI_Iprobe –является не блокирующей. Она просматривает всю очередь пришедших сообщений и возвращает значение flag = true, если сообщение с заданными в функции атрибутами, соответствующими аргументам source, tag и commдоставлено. В этом случае поля структуры status,которая является аргументом функции, инициализируются значениями, в соответствии с пробованным сообщением. В противном случае вызов возвращает flag = false, и оставляет status неопределенным.

Все пришедшие сообщения выстраиваются в очередь до тех пор, пока не будет вызвана функция приема MPI_Recv, которая выбирает из очереди по заданным в функции атрибутам соответствующее сообщение. Сообщение принимается и системные ресурсы, используемые для данного обмена, освобождаются. Если в функциях MPI_Probeи MPI_Iprobe используются MPI_ANY_SOURCE и MPI_ANY_TAG, будет получена информация о первом пришедшем сообщении. Определить номер процесса-отправителя, значение tagи длины сообщенияможно, обращаясь к полям структуры status.Прииспользовании MPI_ANY_SOURCE и tagбудет получена информация о первом пришедшем сообщении с данным значением tag.Прииспользовании MPI_ANY_TAG и source будет получена информация о первом пришедшем сообщении от процесса с номером source.

Аргумент status также возвращает информацию о длине принятого сообщения. Однако, эта информация не содержится как поле структуры status; чтобы получить значение длины принятого сообщения необходимо вызвать функцию MPI_GET_COUNT.

MPI_GET_COUNT(status, datatype, count)

IN status статус, возвращенный операцией приема (Status)
IN datatype тип принимаемых данных (handle)
OUT count количество принятых элементов (integer)

 

Операция MPI_Cancelмаркирует для отменыждущие выполнения не блокирующие операции обмена по указанному в параметре дескриптору запроса.

MPI_Cancel (request)

IN request -коммуникационный запрос (дескриптор)

 

Вызов MPI_Cancelзаканчивается немедленно. После маркировки отмены операции обмена необходимо ее завершить, используя вызов MPI_Waitили MPI_Test(или любые производные операции). Если обмен отмечен для отмены, то вызов MPI_Waitдля этой операции гарантирует ее завершение.

Если используется буферизующий обмен (MPI_Ibsend), будет освобожден буфер, выделенный для обмена.

 

Отмена операции обмена и выполнение обмена одновременно выполняться не могут, либо выполняется обмен, либо выполняется его отмена. Если операция была отменена, то информация о произведенном действии будет возвращена в аргументе status той операции, которая выполняет обмен.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.