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 |