MPI_Allgatherv funkce
Shromáždí proměnlivé množství dat od každého člena skupiny a odešle data všem členům skupiny. Funkce MPI_Allgatherv se podobá MPI_Gatherv s tím rozdílem, že výsledek obdrží všechny procesy, nikoli pouze kořen. Blok dat odeslaný z procesu jje přijat každým procesem a umístěn do jth bloku vyrovnávací paměti recvbuf. Všechny tyto bloky nemusí mít stejnou velikost.
Syntaxe
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
);
Parametry
sendbuf [in]
Ukazatel na data, která se mají odeslat všem procesům ve skupině. Počet a datový typ prvků ve vyrovnávací paměti jsou zadány v parametrech sendcount a sendtype . Každý prvek ve vyrovnávací paměti odpovídá procesu ve skupině.Pokud parametr comm odkazuje na intrakomunikator, můžete zadat místní možnost zadáním MPI_IN_PLACE ve všech procesech. Parametry sendcount a sendtype jsou ignorovány. Každý proces zadává data do odpovídajícího elementu vyrovnávací paměti pro příjem. N.proces odešle data do nth elementu vyrovnávací paměti pro příjem.
sendcount
Počet datových prvků, které tento proces odesílá ve vyrovnávací paměti zadané v parametru sendbuf . Pokud je prvek v sendcount nula, datová část zprávy z tohoto procesu je prázdná.sendtype
Datový typ MPI prvků ve vyrovnávací paměti pro odesílání.recvbuf [out]
Ukazatel na vyrovnávací paměť, která obsahuje data přijatá z jednotlivých procesů. Počet a datový typ prvků ve vyrovnávací paměti jsou zadané v parametrech recvcount a recvtype .recvcounts [in]
Počet datových prvků z jednotlivých procesů komunikátoru v vyrovnávací paměti pro příjem.displs [in]
Umístění dat z jednotlivých procesů komunikátoru vzhledem k parametru recvbuf .V polích parametrů recvbuf, recvcounts a displs odkazuje nth prvek každého pole na data, která jsou přijata z n-tého procesu komunikátoru.
recvtype
Datový typ MPI každého prvku ve vyrovnávací paměti.Komunikace
Popisovač MPI_Comm communicatoru.
Vrácená hodnota
Vrátí MPI_SUCCESS při úspěchu. V opačném případě je návratovou hodnotou kód chyby.
V nástroji Fortran je vrácená hodnota uložena v parametru 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
Poznámky
Pravidla použití pro MPI_Allgatherv odpovídají pravidlům pro MPI_Gatherv.
Podpis typu přidružený k parametru sendtype v procesu musí být roven podpisu typu, který je přidružený k parametru recvtype v jakémkoli jiném procesu.
Pokud parametr comm odkazuje na intrakomunikator, výsledek volání MPI_Allgatherv(...)
je, jako by všechny procesy spustily volání MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)
, pro root = 0 , ..., n-1
.
Pokud parametr comm odkazuje na interkomunikátor, pak každý proces jedné skupiny, například skupina A, přispívá počtem datových položek, které jsou zadány v parametru sendcount . Tato data jsou zřetězena a výsledek je uložen v každém procesu ve druhé skupině B. Naopak zřetězení dat procesů ve skupině B je uloženo v každém procesu ve skupině A. Parametry vyrovnávací paměti pro odesílání ve skupině A musí být konzistentní s parametry vyrovnávací paměti pro příjem ve skupině B a naopak.
Požadavky
Produkt |
HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package nebo HPC Pack 2008 Client Utilities |
Hlavička |
Mpi.h; Mpif.h |
Knihovna |
Msmpi.lib |
DLL |
Msmpi.dll |