Compartilhar via


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 processo envia dados para o 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 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

Confira também

Funções coletivas de MPI

MPI_Datatype

MPI_Gatherv

MPI_Test

MPI_Testall

MPI_Testany

MPI_Testsome

MPI_Wait

MPI_Waitall

MPI_Waitany

MPI_Waitsome