функция MPI_Recv
Выполняет операцию получения и не возвращается, пока не будет получено соответствующее сообщение.
Синтаксис
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
Параметры
buf [in, необязательный]
Указатель на буфер, содержащий отправляемые данные.count
Количество элементов в буфере. Если часть данных сообщения пуста, задайте для параметра count значение 0.datatype
Тип данных элементов в буферном массиве.source
Ранг процесса отправки в указанном коммуникаторе. Укажите константу MPI_ANY_SOURCE , чтобы указать, что любой источник является допустимым.Тег
Тег сообщения, используемый для различения различных типов сообщений. Укажите константу MPI_ANY_TAG , чтобы указать, что любой тег допустим.Comm
Дескриптор для коммуникатора.status [out]
При возврате содержит указатель на структуру MPI_Status , в которой хранятся сведения о полученном сообщении.
Возвращаемое значение
Возвращает MPI_SUCCESS об успешном выполнении. В противном случае возвращаемое значение является кодом ошибки.
В Fortran возвращаемое значение хранится в параметре IERROR .
Fortran
MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, IERROR)
<type> BUF(*)
INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS(MPI_STATUS_SIZE), IERROR
Комментарии
Длина полученного сообщения должна быть меньше или равна длине буфера приема. Эта функция возвращает ошибку переполнения, если все входящие данные не помещаются в буфер приема.
Если полученное сообщение короче буфера, изменяется только часть буфера, соответствующая сообщению. Оставшаяся часть буфера не изменяется.
Процессы могут отправлять сообщения себе. Однако это небезопасно делать с блокирующими операциями отправки и получения, MPI_Send и MPI_Recv, так как эти блокирующие операции отправки и получения могут привести к взаимоблокировке.
Примечание
Существует асимметрия между операциями отправки и получения. Операция получения может принимать сообщения от произвольного отправителя, но операция отправки должна указывать уникального получателя. Это реализует стиль push-связи, в котором передача данных осуществляется отправителем, а не стилем извлечения, в котором передача данных осуществляется получателем.
Требования
Продукт |
Распространяемый пакет HPC 2012 MS-MPI, пакет HPC 2008 R2 распространяемый пакет MS-MPI, пакет HPC 2008 MS-MPI распространяемый пакет или служебные программы клиента ПАКЕТА HPC 2008 |
Заголовок |
Mpi.h; Mpif.h |
Библиотека |
Msmpi.lib |
DLL |
Msmpi.dll |