Partilhar via


função MPI_Allgatherv

Recolhe uma quantidade variável de dados de cada membro de um grupo e envia os dados a todos os membros do grupo. A função MPI_Allgatherv é semelhante à MPI_Gatherv, exceto que todos os processos recebem o resultado, em vez de apenas a raiz. O bloco de dados que é enviado do processo jé recebido por cada processo e colocado no bloco jdo recvbuf da memória intermédia. Estes blocos não têm de ter todos o mesmo tamanho.

Sintaxe

int MPIAPI MPI_Allgatherv(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
  _In_  int          *recvcounts,
  _In_  int          *displs,
        MPI_Datatype recvtype,
        MPI_Comm     comm
);

Parâmetros

  • sendbuf [in]
    O ponteiro para os dados a serem enviados 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 intracomunicador, 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 nth elemento da memória intermédia de receção.

  • sendcount
    O número de elementos de dados que este processo envia na memória intermédia especificada no parâmetro sendbuf . Se um elemento na conta de envio for zero, a parte dos dados da mensagem desse processo está vazia.

  • sendtype
    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 que são 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 .

  • recvcounts [in]
    O número de elementos de dados de cada processo de comunicador na memória intermédia de receção.

  • desativa [in]
    A localização, relativa ao parâmetro recvbuf , dos dados de cada processo do communicator.

    No recvbuf, recvcounts e desativa as matrizes de parâmetros, o n.ºelemento de cada matriz refere-se aos dados recebidos do nth communicator process.

  • recvtype
    O tipo de dados MPI de cada elemento na memória intermédia.

  • vírgula
    O identificador do MPI_Comm communicator.

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_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
        <type> SENDBUF(*), R.ECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

Observações

As regras de utilização para MPI_Allgatherv correspondem às regras de MPI_Gatherv.

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

Se o parâmetro de comm fizer referência a um intracomunicador, o resultado de uma chamada a MPI_Allgatherv(...)é como se todos os processos executassem chamadas para MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm), para root = 0 , ..., n-1.

Se o parâmetro de comm 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 sendcount . 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 da memória intermédia de envio no grupo A têm de ser consistentes com os parâmetros da memória intermédia de receção no grupo B e vice-versa.

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_Gatherv

MPI_Datatype