Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 |