funzione MPI_Allgatherv
Raccoglie una quantità di dati variabile da ogni membro di un gruppo e invia i dati a tutti i membri del gruppo. La funzione MPI_Allgatherv è simile alla MPI_Gatherv, ad eccezione del fatto che tutti i processi ricevono il risultato, anziché solo la radice. Il blocco di dati inviati dal processo jth viene ricevuto da ogni processo e inserito nel blocco jdel buffer recvbuf. Questi blocchi non devono essere tutti uguali.
Sintassi
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
);
Parametri
sendbuf [in]
Puntatore ai dati da inviare a tutti i processi del gruppo. Il numero e il tipo di dati degli elementi nel buffer vengono specificati nei parametri sendcount e sendtype . Ogni elemento nel buffer corrisponde a un processo nel gruppo.Se il parametro comm fa riferimento a un intracommunicator, è possibile specificare un'opzione sul posto specificando MPI_IN_PLACE in tutti i processi. I parametri sendcount e sendtype vengono ignorati. Ogni processo immette i dati nell'elemento buffer di ricezione corrispondente. Il processo ninvia i dati all'elemento ndel buffer di ricezione.
sendcount
Numero di elementi di dati inviati dal processo nel buffer specificato nel parametro sendbuf . Se un elemento in sendcount è zero, la parte dei dati del messaggio da tale processo è vuota.sendtype
Tipo di dati MPI degli elementi nel buffer di invio.recvbuf [out]
Puntatore a un buffer contenente i dati ricevuti da ogni processo. Il numero e il tipo di dati degli elementi nel buffer vengono specificati nei parametri recvcount e recvtype .recvcounts [in]
Numero di elementi di dati di ogni processo di comunicatore nel buffer di ricezione.displs [in]
Percorso, relativo al parametro recvbuf , dei dati di ogni processo di comunicatore.Nelle matrici di parametri recvbuf, recvcounts e displs , l'nth elemento di ogni matrice fa riferimento ai dati ricevuti dal processo ndi comunicatore.
recvtype
Tipo di dati MPI di ogni elemento nel buffer.Comm
Handle del comunicatore MPI_Comm.
Valore restituito
Restituisce MPI_SUCCESS sull'esito positivo. In caso contrario, il valore restituito è un codice di errore.
In Fortran il valore restituito viene archiviato nel parametro 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
Commenti
Le regole di utilizzo per MPI_Allgatherv corrispondono alle regole per MPI_Gatherv.
La firma del tipo associata al parametro sendtype in un processo deve essere uguale alla firma del tipo associata al parametro recvtype in qualsiasi altro processo.
Se il parametro comm fa riferimento a un intracommunicator, il risultato di una chiamata a MPI_Allgatherv(...)
è come se tutti i processi eseguiti a MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)
, per root = 0 , ..., n-1
.
Se il parametro comm fa riferimento a un intercommunicator, ogni processo di un gruppo, ad esempio gruppo A, contribuisce al numero di elementi di dati specificati nel parametro sendcount . Questi dati sono concatenati e il risultato viene archiviato in ogni processo nell'altro gruppo, gruppo B. Al contrario, la concatenazione dei dati dei processi nel gruppo B viene archiviata in ogni processo nel gruppo A. I parametri del buffer di invio nel gruppo A devono essere coerenti con i parametri del buffer di ricezione nel gruppo B e viceversa.
Requisiti
Prodotto |
Pacchetto ridistribuibile HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package o HPC Pack 2008 Utilità client |
Intestazione |
Mpi.h; Mpif.h |
Libreria |
Msmpi.lib |
DLL |
Msmpi.dll |