Dela via


funktionen MPI_Scatter

Sprider data från en medlem över alla medlemmar i en grupp. Funktionen MPI_Scatter utför inverteringen av den åtgärd som utförs av funktionen MPI_Gather .

Syntax

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
);

Parametrar

  • sendbuf [in]
    Handtaget till en buffert som innehåller de data som ska skickas av rotprocessen.

    Parametern sendbuf ignoreras för alla icke-rotprocesser.

    Om comm-parametern refererar till en intracommunicator kan du ange ett alternativ på plats genom att ange MPI_IN_PLACE i rotprocessen. Parametrarna recvcount och recvtype ignoreras. Den spridda vektorn anses fortfarande innehålla n segment, där n är gruppstorleken. segmentet som motsvarar rotprocessen flyttas inte.

  • sendcount
    Antalet element i sändningsbufferten. Om sendcount är noll är datadelen av meddelandet tom.

    Parametern sendcount ignoreras för alla icke-rotprocesser.

  • sendtype
    Datatypen för varje element i bufferten.

    Parametern sendcount ignoreras för alla icke-rotprocesser.

  • recvbuf [out]
    Handtaget till en buffert som innehåller de data som tas emot för varje process. Antalet och datatypen för elementen i bufferten anges i parametrarna recvcount och recvtype .

  • recvcount
    Antalet element i mottagningsbufferten. Om antalet är noll är datadelen av meddelandet tom.

  • recvtype
    Datatypen för elementen i mottagningsbufferten.

  • Root
    Rangordningen för sändningsprocessen inom den angivna kommunikatören.

  • Comm
    MPI_Comm communicator-handtaget.

Returvärde

Returnerar MPI_SUCCESS vid lyckat resultat. Annars är returvärdet en felkod.

I Fortran lagras returvärdet i parametern IERROR .

Fortran

    MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR

Kommentarer

Effekten av funktionen MPI_Scatter är som om rotprocessen skickar ett meddelande med hjälp av funktionen MPI_Send . Det här meddelandet är uppdelat i n lika stora segment, ett för varje medlem i gruppen. Det i:e segmentet skickas till den i:e processen i gruppen.

Om kommatecken är en intracommunicator blir resultatet som om roten körde n send-åtgärder MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)och varje process körde en mottagning, MPI_Recv(recvbuf, recvcount, recvtype, i,…).

Typsignaturen som anges av parametrarna sendcount och sendtype för rotprocessen måste vara lika med den typsignatur som anges av rekkontot och rekttypsparametrar för alla processer. Därför måste mängden data som skickas vara lika med mängden data som tas emot mellan alla processer. Distinkta typkartor mellan avsändare och mottagare tillåts fortfarande.

Alla funktionsparametrar är viktiga för rotprocessen, endast parametrarna recvbuf, recvcount, recvtype, root och comm är viktiga för de andra processerna. Rot- och kommaparametrarna måste vara identiska i alla processer.

Specifikationen av antal och typer bör inte göra att någon plats i roten läse mer än en gång.

Om comm-parametern refererar till en intercommunicator omfattar anropet alla processer i intercommunicator, men med en grupp, grupp A, som definierar rotprocessen. Alla processer i den andra gruppen, grupp B, anger samma värde i rotparametern, d.v.s. rotprocessens rangordning i grupp A. Rotprocessen anger värdet MPI_ROOT i rotparametern. Alla andra processer i grupp A anger värdet MPI_PROC_NULL i rotparametern. Data sänds från rotprocessen till alla processer i grupp B. Buffertparametrarna för processerna i grupp B måste vara konsekventa med buffertparametern för rotprocessen.

Krav

Produkt

HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package eller HPC Pack 2008 Client Utilities

Huvud

Mpi.h; Mpif.h

Bibliotek

Msmpi.lib

DLL

Msmpi.dll

Se även

Kollektiva MPI-funktioner

MPI_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatterv