Sdílet prostřednictvím


MPI_Scatter funkce

Rozsadí data od jednoho člena do všech členů skupiny. Funkce MPI_Scatter provádí inverzní funkci k operaci, kterou provádí funkce MPI_Gather .

Syntaxe

int MPIAPI MPI_Scatter(
  _In_  void         *sendbuf,
        int          sendcount,
        MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        MPI_Datatype recvtype,
        int          root,
        MPI_Comm     comm
);

Parametry

  • sendbuf [in]
    Popisovač vyrovnávací paměti 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í
    Počet prvků ve vyrovnávací paměti pro odesílání. Pokud je hodnota sendcount nulová, je datová část zprávy prázdná.

    Parametr sendcount je ignorován pro všechny procesy, které nejsou kořenem.

  • typ odeslání
    Datový typ každého prvku ve vyrovnávací paměti.

    Parametr sendcount je ignorován pro všechny procesy, které nejsou kořenem.

  • recvbuf [out]
    Popisovač vyrovnávací paměti, která obsahuje data přijatá v každém procesu. 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í 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_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR

Poznámky

Účinek funkce MPI_Scatter je, jako kdyby kořenový proces odeslal zprávu pomocí funkce MPI_Send . Tato zpráva je rozdělena do n stejných segmentů, jeden pro každého člena skupiny. I.segment se odešle do i. procesu ve skupině.

Pokud je comm intracommunicator, výsledek je, jako by kořen spustil n operace MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)odeslání ; a každý proces spustil příjem, MPI_Recv(recvbuf, recvcount, recvtype, i,…).

Podpis typu určený parametry sendcount a 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é.

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é.

Specifikace počtů a typů by neměla způsobit, aby se jakékoli umístění v kořenovém adresáři četlo více než jednou.

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

Viz také

Kolektivní funkce MPI

MPI_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatterv