Função MPI_Igatherv
Coleta dados variáveis de todos os membros de um grupo para um membro de maneira não bloqueada.
Sintaxe
int MPIAPI MPI_Igatherv(
_In_opt_ const void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_opt_ const int recvcounts[],
_In_opt_ const int displs[],
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
Parâmetros
sendbuf [in, opcional]
O identificador para um buffer que contém os dados a serem enviados para o processo raiz.Se o parâmetro comm referenciar um intracomunicador, você poderá especificar uma opção in-loco especificando MPI_IN_PLACE em todos os processos. Os parâmetros sendcount e sendtype são ignorados. Cada processo insere dados no elemento de buffer de recebimento correspondente. O nºprocesso envia dados para o nºelemento do buffer de recebimento. Presume-se que os dados enviados pelo processo raiz estejam no lugar correto no buffer de recebimento.
sendcount [in]
O número de elementos no buffer de envio. Se sendcount for zero, a parte de dados da mensagem estará vazia.sendtype [in]
O tipo de dados de cada elemento no buffer.recvbuf [out, opcional]
O identificador para um buffer no processo raiz que contém os dados recebidos de cada processo, incluindo os dados enviados pelo processo raiz. Esse parâmetro é significativo apenas no processo raiz. O parâmetro recvbuf é ignorado para todos os processos não raiz.recvcounts[] [in, opcional]
O número de elementos recebidos de cada processo. Cada elemento na matriz corresponde à classificação do processo de envio. Se a contagem for zero, a parte de dados da mensagem estará vazia. Esse parâmetro é significativo apenas no processo raiz.displs[] [in, opcional]
O local, em relação ao parâmetro recvbuf , dos dados de cada processo do comunicador. Os dados recebidos do processo j são colocados no buffer de recebimento dos elementos displs[j] de deslocamento do processo raiz do ponteiro sendbuf .Nas matrizes de parâmetro recvbuf, recvcounts e displs , o nº elemento de cada matriz refere-se aos dados recebidos do nºprocesso do comunicador.
Esse parâmetro é significativo apenas no processo raiz.
recvtype [in]
O tipo de dados de cada elemento no buffer. Esse parâmetro é significativo apenas no processo raiz.raiz [in]
A classificação do processo de recebimento dentro do comunicador especificado.comm [in]
O MPI_Comm identificador do comunicador.solicitação [out]
O identificador MPI_Request que representa a operação de comunicação.
Retornar valor
Retorna MPI_SUCCESS em caso de êxito. Caso contrário, o valor retornado será um código de erro.
Em Fortran, o valor retornado é armazenado no parâmetro IERROR .
Fortran
MPI_IGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE,
ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, REQUEST, IERROR
Comentários
Uma chamada sem bloqueio inicia uma operação de redução coletiva que deve ser concluída em uma chamada de conclusão separada. Depois de iniciada, a operação pode progredir independentemente de qualquer computação ou outra comunicação nos processos participantes. Dessa forma, as operações de redução sem bloqueio podem atenuar possíveis efeitos de sincronização de operações de redução executando-as em "segundo plano".
Todas as chamadas de conclusão (por exemplo, MPI_Wait) têm suporte para operações de redução sem bloqueio.
Requisitos
Produto |
Microsoft MPI v7 |
parâmetro |
Mpi.h; Mpif.h |
Biblioteca |
Msmpi.lib |
DLL |
Msmpi.dll |