Partilhar via


função MPI_Allgather

Recolhe dados de todos os membros de um grupo e envia os dados para todos os membros do grupo. A função MPI_Allgather é semelhante à função MPI_Gather , exceto que envia os dados para todos os processos em vez de apenas para a raiz. As regras de utilização para MPI_Allgather correspondem às regras de MPI_Gather.

Sintaxe

int MPIAPI MPI_Allgather(
  _In_  void         *sendbuf,
  _In_  int          sendcount,
  _In_  MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

Parâmetros

  • sendbuf [in]
    O ponteiro para os dados a enviar para todos os processos no grupo. O número e o tipo de dados dos elementos na memória intermédia são especificados nos parâmetros sendcount e sendtype . Cada elemento na memória intermédia corresponde a um processo no grupo.

    Se o parâmetro de comunicação fizer referência a um intracomunário, pode especificar uma opção no local ao especificar MPI_IN_PLACE em todos os processos. Os parâmetros sendcount e sendtype são ignorados. Cada processo introduz dados no elemento de memória intermédia de receção correspondente. O nth process envia dados para o elemento nda memória intermédia de receção.

  • sendcount [in]
    O número de elementos na memória intermédia que é especificado no parâmetro sendbuf . Se a conta de envio for zero, a parte de dados da mensagem estará vazia.

  • sendtype [in]
    O tipo de dados MPI dos elementos na memória intermédia de envio.

  • recvbuf [out]
    O ponteiro para uma memória intermédia que contém os dados recebidos de cada processo. O número e o tipo de dados dos elementos na memória intermédia são especificados nos parâmetros recvcount e recvtype .

  • recvcount
    O número de elementos na memória intermédia de receção. Se a contagem for zero, a parte de dados da mensagem estará vazia.

  • recvtype
    O tipo de dados MPI dos elementos na memória intermédia de receção.

  • vírgula
    O MPI_Comm identificador do comunicador.

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_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Observações

A assinatura de tipo associada ao parâmetro sendtype num processo tem de ser igual à assinatura do tipo que está associada ao parâmetro de recvtype em qualquer outro processo.

Se o parâmetro de comunicação fizer referência a um intracomunário, o resultado de uma chamada MPI_ALLGATHER(...) é como se todos os processos executados n chamassem para MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm)root = 0 , ..., n-1.

Se o parâmetro de comunicação fizer referência a um intercomunicador, cada processo de um grupo, por exemplo, grupo A, contribui com o número de itens de dados especificados no parâmetro de contagem de envio . Estes dados são concatenados e o resultado é armazenado em cada processo no outro grupo, grupo B. Por outro lado, a concatenação dos dados dos processos no grupo B é armazenada em cada processo no grupo A. Os parâmetros de memória intermédia de envio no grupo A têm de ser consistentes com os parâmetros de memória intermédia de receção no grupo B e vice-versa.

O número de itens, que são enviados por processos no grupo A, não tem de ser igual ao número de itens que são enviados por processos no grupo B. Em particular, pode mover dados apenas numa direção ao especificar sendcount == 0 para a comunicação na direção inversa.

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

Ver também

Funções Coletivas de MPI

MPI_Datatype

MPI_Allgather