função MPI_Recv
Efetua uma operação de receção e não devolve até ser recebida uma mensagem correspondente.
Sintaxe
int MPIAPI MPI_Recv(
_In_opt_ void *buf,
int count,
MPI_Datatype datatype,
int source,
int tag,
MPI_Comm comm,
_Out_ MPI_Status *status
);
Parâmetros
buf [in, opcional]
Um ponteiro para a memória intermédia que contém os dados a enviar.contagem
O número de elementos na memória intermédia. Se a parte de dados da mensagem estiver vazia, defina o parâmetro de contagem como 0.tipo de dados
O tipo de dados dos elementos na matriz de memória intermédia.origem
A classificação do processo de envio no comunicador especificado. Especifique a constante MPI_ANY_SOURCE para especificar que qualquer origem é aceitável.etiqueta
A etiqueta de mensagem que é utilizada para distinguir diferentes tipos de mensagens. Especifique a constante MPI_ANY_TAG para indicar que qualquer etiqueta é aceitável.vírgula
A alça do comunicador.status [out]
Na devolução, contém um ponteiro para uma estrutura MPI_Status onde são armazenadas informações sobre a mensagem recebida.
Valor devolvido
Devolve MPI_SUCCESS com êxito. Caso contrário, o valor devolvido é um código de erro.
Em Fortran, o valor devolvido é armazenado no parâmetro 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
Observações
O comprimento da mensagem recebida tem de ser menor ou igual ao comprimento da memória intermédia de receção. Esta função devolve um erro de excesso se todos os dados recebidos não caberem na memória intermédia de receção.
Se a mensagem recebida for mais curta do que a memória intermédia, apenas a parte da memória intermédia que corresponde à mensagem é modificada. O resto da memória intermédia não é modificado.
Os processos podem enviar mensagens para si próprios. No entanto, não é seguro fazê-lo com as operações de envio e receção de bloqueio, MPI_Send e MPI_Recv, uma vez que estas operações de envio e receção de bloqueio podem causar um impasse.
Nota
Existe uma assimetria entre as operações de envio e receção. Uma operação de receção pode aceitar mensagens de um remetente arbitrário, mas uma operação de envio tem de especificar um recetor exclusivo. Isto implementa um estilo de comunicação push, em que a transferência de dados é efetuada pelo remetente, em vez de um estilo pull em que a transferência de dados é efetuada pelo recetor.
Requisitos
Produto |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package ou HPC Pack 2008 Client Utilities |
Cabeçalho |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
DLL |
Msmpi.dll |