Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Executa uma operação de recebimento e não retorna até que uma mensagem correspondente seja recebida.
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 o buffer que contém os dados a serem enviados.contagem
O número de elementos no buffer. Se a parte de dados da mensagem estiver vazia, defina o parâmetro count como 0.datatype
O tipo de dados dos elementos na matriz de buffer.source
A classificação do processo de envio dentro do comunicador especificado. Especifique a constante MPI_ANY_SOURCE para especificar que qualquer fonte é aceitável.tag
A marca de mensagem usada para distinguir diferentes tipos de mensagens. Especifique a constante MPI_ANY_TAG para indicar que qualquer marca é aceitável.comm
O identificador para o comunicador.status [out]
No retorno, contém um ponteiro para uma estrutura MPI_Status em que as informações sobre a mensagem recebida são armazenadas.
Retornar valor
Retorna MPI_SUCCESS com êxito. Caso contrário, o valor retornado será um código de erro.
No Fortran, o valor retornado é 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
Comentários
O comprimento da mensagem recebida deve ser menor ou igual ao comprimento do buffer de recebimento. Essa função retornará um erro de estouro se todos os dados de entrada não se ajustarem ao buffer de recebimento.
Se a mensagem recebida for menor que o buffer, somente a parte do buffer que corresponde à mensagem será modificada. O restante do buffer não é modificado.
Os processos podem enviar mensagens para si mesmos. No entanto, não é seguro fazer isso com as operações de envio e recebimento de bloqueio, MPI_Send e MPI_Recv, pois essas operações de envio e recebimento de bloqueio podem causar um deadlock.
Observação
Há uma assímetria entre as operações de envio e recebimento. Uma operação de recebimento pode aceitar mensagens de um remetente arbitrário, mas uma operação de envio deve especificar um receptor exclusivo. Isso implementa um estilo de comunicação por push, em que a transferência de dados é efetuada pelo remetente, em vez de um estilo de pull em que a transferência de dados é efetuada pelo receptor.
Requisitos
Produto |
Pacote Redistribuível do HPC Pack 2012 MS-MPI, Pacote Redistribuível HPC Pack 2008 R2 MS-MPI, Pacote Redistribuível do HPC Pack 2008 MS-MPI ou Utilitários de Cliente HPC Pack 2008 |
parâmetro |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
DLL |
Msmpi.dll |