Compartilhar via


função MPI_Allgatherv

Coleta uma quantidade variável de dados de cada membro de um grupo e envia os dados para todos os membros do grupo. A função MPI_Allgatherv é como a MPI_Gatherv, exceto que todos os processos recebem o resultado, em vez de apenas a raiz. O bloco de dados enviado do processo jth é recebido por cada processo e colocado no bloco jth do buffer recvbuf. Esses blocos não precisam ter 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 no buffer são especificados nos parâmetros sendcount e sendtype . Cada elemento no buffer corresponde a um processo no grupo.

    Se o parâmetro comm fizer referência a 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.

  • sendcount
    O número de elementos de dados que esse processo envia no buffer especificado no parâmetro sendbuf . Se um elemento em sendcount for zero, a parte de dados da mensagem desse processo estará vazia.

  • sendtype
    O tipo de dados MPI dos elementos no buffer de envio.

  • recvbuf [out]
    O ponteiro para um buffer que contém os dados recebidos de cada processo. O número e o tipo de dados dos elementos no buffer são especificados nos parâmetros recvcount e recvtype .

  • recvcounts [in]
    O número de elementos de dados de cada processo de comunicador no buffer de recebimento.

  • displs [in]
    O local, em relação ao parâmetro recvbuf , dos dados de cada processo do comunicador.

    Nas matrizes de parâmetro recvbuf, recvcounts e displs , o nº elemento de cada matriz refere-se aos dados recebidos do processo do comunicador.

  • recvtype
    O tipo de dados MPI de cada elemento no buffer.

  • comm
    O MPI_Comm identificador do comunicador.

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

Comentários

As regras de uso para MPI_Allgatherv correspondem às regras de MPI_Gatherv.

A assinatura de tipo associada ao parâmetro sendtype em um processo deve ser igual à assinatura de tipo associada ao parâmetro recvtype em qualquer outro processo.

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

Se o parâmetro comm fizer referência a um intercomunicador, cada processo de um grupo, por exemplo, o grupo A, contribuirá com o número de itens de dados especificados no parâmetro sendcount . Esses dados são concatenados e o resultado é armazenado em cada processo no outro grupo, o 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 buffer de envio no grupo A devem ser consistentes com os parâmetros de buffer de recebimento no grupo B e vice-versa.

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

Confira também

Funções coletivas de MPI

MPI_Gatherv

MPI_Datatype