MPI_Scatterv funkce
Rozsadí data od jednoho člena do všech členů skupiny. Funkce MPI_Scatterv provádí inverzní funkci k operaci, kterou provádí funkce MPI_Gatherv .
Syntaxe
int MPIAPI MPI_Scatterv(
_In_ void *sendbuf,
_In_ int *sendcounts,
_In_ int *displs,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parametry
sendbuf [in]
Ukazatel na vyrovnávací paměť obsahující data, která mají být odeslána kořenovým procesem.Parametr sendbuf je ignorován pro všechny procesy, které nejsou kořenové.
Pokud parametr comm odkazuje na intracommunicator, můžete zadat místní možnost zadáním MPI_IN_PLACE v kořenovém procesu. Parametry recvcount a recvtype se ignorují. Bodový vektor je stále považován za obsahující n segmentů, kde n je velikost skupiny; segment, který odpovídá kořenovému procesu, se nepřesune.
počet odeslání [v]
Počet prvků, které se mají odeslat do každého procesu. Pokud je sendcount[i] nula, datová část zprávy pro tento proces je prázdná.Parametr sendcount je ignorován pro všechny procesy, které nejsou kořenem.
displs [v]
Umístění dat, která se mají odeslat do jednotlivých procesů komunikátoru. Každé umístění v poli je relativní vzhledem k odpovídajícímu prvku pole sendbuf .V polích parametrů sendbuf, sendcounts a displs odkazuje ntý prvek každého pole na data, která mají být odeslána n-tohoprocesu komunikátoru.
Tento parametr je významný pouze v kořenovém procesu.
typ odeslání
Datový typ MPI každého prvku ve vyrovnávací paměti.Parametr sendcount je ignorován pro všechny procesy, které nejsou kořenem.
recvbuf [out]
Ukazatel na vyrovnávací paměť, která obsahuje data přijatá v jednotlivých procesech. Počet a datový typ prvků ve vyrovnávací paměti jsou uvedeny v parametrech recvcount a recvtype .recvcount
Počet prvků ve vyrovnávací paměti pro příjem. Pokud je počet nula, datová část zprávy je prázdná.recvtype
Datový typ prvků v vyrovnávací paměti pro příjem.Kořenové
Pořadí v procesu odesílání v rámci zadaného komunikátoru.Komunikace
Popisovač MPI_Comm komunikátoru.
Vrácená hodnota
Vrátí MPI_SUCCESS při úspěchu. V opačném případě je návratovou hodnotou kód chyby.
Ve Fortranu je vrácená hodnota uložena v parametru IERROR .
Fortran
MPI_SCATTERV(SENDBUF, SENDCOUNT, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, DISPLS(*), RECVCOUNT(*), RECVTYPE, ROOT, COMM, IERROR
Poznámky
Funkce MPI_Scatterv rozšiřuje funkce MPI_Scatter tím, že umožňuje odesílat do každého procesu různý počet dat zadaný v poli sendcounts .
Specifikace počtů, typů a posunutí by neměla způsobit, že by se žádné umístění v kořenovém adresáři četlo vícekrát.
Všechny parametry funkce jsou významné pro kořenový proces, pouze parametry recvbuf, recvcount, recvtype, root a comm jsou významné pro ostatní procesy. Parametry root a comm musí být ve všech procesech identické.
Podpis typu určený parametrem sendcount a parametry sendtype pro kořenový proces se musí rovnat podpisu typu určenému recvcount a parametrům recvtype pro všechny procesy. Množství odeslaných dat se proto musí rovnat množství dat přijatých mezi libovolnými dvojicemi procesů. Mapování různých typů mezi odesílatelem a příjemcem je stále povolené.
Pokud je comm intracommunicator, výsledek je, jako by kořen spustil n operace MPI_Send(sendbuf + displs[i]*extent(sendtype), sendcounts[i], sendtype, I, …)
odeslání ; a každý proces spustil příjem, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
Pokud parametr comm odkazuje na interkomunikator, pak volání zahrnuje všechny procesy v interkomunikátoru, ale s jednou skupinou, skupinou A, která definuje kořenový proces. Všechny procesy v druhé skupině, skupině B, nastaví stejnou hodnotu v kořenovém parametru, tj. pořadí kořenového procesu ve skupině A. Kořenový proces nastaví hodnotu MPI_ROOT v parametru root . Všechny ostatní procesy ve skupině A nastavte hodnotu MPI_PROC_NULL v kořenovém parametru. Data se vysílaly z kořenového procesu do všech procesů ve skupině B. Parametry vyrovnávací paměti procesů ve skupině B musí být konzistentní s parametrem vyrovnávací paměti kořenového procesu.
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; Soubor Mpif.h |
Knihovna |
Msmpi.lib |
DLL |
Msmpi.dll |