funzione MPI_Igatherv
Raccoglie i dati delle variabili da tutti i membri di un gruppo a un membro in modo non bloccanti.
Sintassi
int MPIAPI MPI_Igatherv(
_In_opt_ const void *sendbuf,
_In_ int sendcount,
_In_ MPI_Datatype sendtype,
_Out_opt_ void *recvbuf,
_In_opt_ const int recvcounts[],
_In_opt_ const int displs[],
_In_ MPI_Datatype recvtype,
_In_ int root,
_In_ MPI_Comm comm,
_Out_ MPI_Request *request
);
Parametri
sendbuf [in, facoltativo]
Handle in un buffer contenente i dati da inviare al processo radice.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 del buffer di ricezione corrispondente. L'nprocesso invia i dati all'nelemento del buffer di ricezione. Si presuppone che i dati inviati dal processo radice siano nella posizione corretta nel buffer di ricezione.
sendcount [in]
Numero di elementi nel buffer di invio. Se sendcount è zero, la parte dei dati del messaggio è vuota.sendtype [in]
Tipo di dati di ogni elemento nel buffer.recvbuf [out, facoltativo]
Handle in un buffer nel processo radice che contiene i dati ricevuti da ogni processo, inclusi i dati inviati dal processo radice. Questo parametro è significativo solo nel processo radice. Il parametro recvbuf viene ignorato per tutti i processi non radice.recvcounts[] [in, facoltativo]
Numero di elementi ricevuti da ogni processo. Ogni elemento nella matrice corrisponde alla classificazione del processo di invio. Se il conteggio è zero, la parte dei dati del messaggio è vuota. Questo parametro è significativo solo nel processo radice.displs[] [in, facoltativo]
Posizione, relativa al parametro recvbuf , dei dati di ogni processo di comunicatore. I dati ricevuti dal processo j vengono inseriti nel buffer di ricezione degli elementi di offset del processo radice displs[j] dal puntatore sendbuf .Nelle matrici di parametri recvbuf, recvcounts e displs, l'n elemento th di ogni matrice fa riferimento ai dati ricevuti dal nprocesso communicator.
Questo parametro è significativo solo nel processo radice.
recvtype [in]
Tipo di dati di ogni elemento nel buffer. Questo parametro è significativo solo nel processo radice.root [in]
Classificazione del processo di ricezione all'interno del comunicatore specificato.comm [in]
Handle del comunicatore MPI_Comm .richiesta [out]
Handle MPI_Request che rappresenta l'operazione di comunicazione.
Valore restituito
Restituisce MPI_SUCCESS in caso di esito positivo. In caso contrario, il valore restituito è un codice di errore.
In Fortran il valore restituito viene archiviato nel parametro IERROR .
Fortran
MPI_IGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE,
ROOT, COMM, REQUEST, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, ROOT, COMM, REQUEST, IERROR
Commenti
Una chiamata non bloccante avvia un'operazione di riduzione collettiva che deve essere completata in una chiamata di completamento separata. Dopo l'avvio, l'operazione può progredire indipendentemente da qualsiasi calcolo o altra comunicazione nei processi partecipanti. In questo modo, le operazioni di riduzione non bloccanti possono ridurre i possibili effetti di sincronizzazione delle operazioni di riduzione eseguendole in "background".
Tutte le chiamate di completamento (ad esempio , MPI_Wait) sono supportate per le operazioni di riduzione non bloccabili.
Requisiti
Prodotto |
Microsoft MPI v7 |
Intestazione |
Mpi.h; Mpif.h |
Libreria |
Msmpi.lib |
DLL |
Msmpi.dll |