Udostępnij za pomocą


MPI_Scatterv, funkcja

Rozprasza dane z jednego elementu członkowskiego we wszystkich członkach grupy. Funkcja MPI_Scatterv wykonuje odwrotność operacji wykonywanej przez funkcję MPI_Gatherv .

Składnia

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]
    Wskaźnik do buforu zawierającego dane, które mają być wysyłane przez proces główny.

    Parametr sendbuf jest ignorowany dla wszystkich procesów innych niż root.

    Jeśli parametr comm odwołuje się do wewnątrzpolecenia, można określić opcję w miejscu, określając MPI_IN_PLACE w procesie głównym. Parametry recvcount i recvtype są ignorowane. Wektor punktowy jest nadal uznawany za zawierający n segmentów, gdzie n jest rozmiarem grupy; segment odpowiadający procesowi głównemu nie jest przenoszony.

  • sendcounts [in]
    Liczba elementów do wysłania do każdego procesu. Jeśli parametr sendcount[i] jest zerowy, część danych komunikatu dla tego procesu jest pusta.

    Parametr sendcount jest ignorowany dla wszystkich procesów innych niż root.

  • displs [in]
    Lokalizacje danych do wysłania do każdego procesu komunikatora. Każda lokalizacja w tablicy jest względna względem odpowiedniego elementu tablicy sendbuf .

    W tablicach sendbuf, sendcounts i displs parametrów nelement każdej tablicy odnosi się do danych, które mają być wysyłane do nprocesu komunikatora.

    Ten parametr jest znaczący tylko w procesie głównym.

  • sendtype
    Typ danych MPI każdego elementu w buforze.

    Parametr sendcount jest ignorowany dla wszystkich procesów innych niż root.

  • recvbuf [out]
    Wskaźnik do buforu zawierającego dane odbierane w każdym procesie. Liczba i typ danych elementów w buforze są określone w parametrach recvcount i recvtype .

  • recvcount
    Liczba elementów w buforze odbierania. Jeśli liczba jest równa zero, część danych komunikatu jest pusta.

  • recvtype
    Typ danych elementów w buforze odbierania.

  • Głównego
    Ranga w procesie wysyłania w określonym komunikatorze.

  • Comm
    Uchwyt komunikatora MPI_Comm .

Wartość zwracana

Zwraca MPI_SUCCESS po powodzeniu. W przeciwnym razie zwracana wartość jest kodem błędu.

W fortran wartość zwracana jest przechowywana w parametrze 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

Uwagi

Funkcja MPI_Scatterv rozszerza funkcjonalność funkcji MPI_Scatter , umożliwiając wysyłanie do każdego procesu różnej liczby danych określonych w tablicy sendcounts .

Specyfikacja liczby, typów i wysiedleń nie powinna spowodować odczytu więcej niż jednego miejsca w katalogu głównym.

Wszystkie parametry funkcji są znaczące w procesie głównym, tylko recvbuf, recvcount, recvtype, root i comm parametry są istotne w innych procesach. Parametry katalogu głównego i comm muszą być identyczne we wszystkich procesach.

Podpis typu określony przez parametr sendcount i sendtype dla procesu głównego musi być równy podpisowi typu określonemu przez recvcount i parametrów recvtype dla wszystkich procesów. W związku z tym ilość wysyłanych danych musi być równa ilości danych odbieranych między dowolną parą procesów. Różne mapy typów między nadawcą a odbiornikiem są nadal dozwolone.

Jeśli comm jest intracommunicator, wynik jest taki, jakby root wykonał n operacji MPI_Send(sendbuf + displs[i]*extent(sendtype), sendcounts[i], sendtype, I, …)wysyłania ; a każdy proces wykonał odbieranie, MPI_Recv(recvbuf, recvcount, recvtype, i,…).

Jeśli parametr comm odwołuje się do interpolenicy, wywołanie obejmuje wszystkie procesy w interpoluniku, ale z jedną grupą, grupą A, która definiuje proces główny. Wszystkie procesy w innej grupie, grupa B, ustaw tę samą wartość w parametrze głównym , czyli rangę procesu głównego w grupie A. Proces główny ustawia wartość MPI_ROOT w parametrze głównym . Wszystkie inne procesy w grupie A ustaw wartość MPI_PROC_NULL w parametrze głównym . Dane są emitowane z procesu głównego do wszystkich procesów w grupie B. Parametry buforu procesów w grupie B muszą być spójne z parametrem buforu procesu głównego.

Wymagania

Produkt

Pakiet redystrybucyjny HPC Pack 2012 MS-MPI, pakiet redystrybucyjny HPC Pack 2008 R2 MS-MPI, pakiet redystrybucyjny HPC Pack 2008 MS-MPI lub narzędzia klienckie HPC Pack 2008

Nagłówek

Mpi.h; Mpif.h

Biblioteka

Msmpi.lib

DLL

Msmpi.dll

Zobacz też

Funkcje zbiorowe MPI

MPI_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatter