MPI_Allgatherv, funkcja
Zbiera zmienną ilość danych z każdego członka grupy i wysyła dane do wszystkich członków grupy. Funkcja MPI_Allgatherv jest podobna do MPI_Gatherv, z tą różnicą, że wszystkie procesy otrzymują wynik, a nie tylko katalog główny. Blok danych wysyłanych z procesu jjest odbierany przez każdy proces i umieszczany w bloku jrecvbuf buforu. Te bloki nie muszą mieć tego samego rozmiaru.
Składnia
int MPIAPI MPI_Allgatherv(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
_In_ int *recvcounts,
_In_ int *displs,
MPI_Datatype recvtype,
MPI_Comm comm
);
Parametry
sendbuf [in]
Wskaźnik do danych, które mają być wysyłane do wszystkich procesów w grupie. Liczba i typ danych elementów w buforze są określone w parametrach sendcount i sendtype . Każdy element w buforze odpowiada procesowi w grupie.Jeśli parametr comm odwołuje się do wewnątrzpolecenia, można określić opcję w miejscu, określając MPI_IN_PLACE we wszystkich procesach. Parametry sendcount i sendtype są ignorowane. Każdy proces wprowadza dane w odpowiednim elemecie buforu odbierania. Nproces wysyła dane do nelementu buforu odbierania.
sendcount
Liczba elementów danych wysyłanych przez ten proces w buforze określonym w parametrze sendbuf . Jeśli element w elemecie sendcount ma wartość zero, część danych komunikatu z tego procesu jest pusta.sendtype
Typ danych MPI elementów w buforze wysyłania.recvbuf [out]
Wskaźnik do buforu zawierającego dane odbierane z każdego procesu. Liczba i typ danych elementów w buforze są określone w parametrach recvcount i recvtype .recvcounts [in]
Liczba elementów danych z każdego procesu komunikatora w buforze odbierania.displs [in]
Lokalizacja względem parametru recvbuf danych z każdego procesu komunikatora.W recvbuf, recvcounts i displs tablic parametrów nelementu każdej tablicy odnosi się do danych odbieranych z nprocesu komunikatora.
recvtype
Typ danych MPI każdego elementu w buforze.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_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS,DISPLS, RECVTYPE,COMM, IERROR)
<type> SENDBUF(*), R.ECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR
Uwagi
Reguły użycia dla MPI_Allgatherv odpowiadają regułom MPI_Gatherv.
Sygnatura typu skojarzona z parametrem sendtype w procesie musi być równa sygnaturze typu skojarzonej z parametrem recvtype w każdym innym procesie.
Jeśli parametr comm odwołuje się do wewnątrzkomunikatora, wynik wywołania jest MPI_Allgatherv(...)
taki, jakby wszystkie procesy wykonywane wywołania do MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm)
, dla root = 0 , ..., n-1
.
Jeśli parametr comm odwołuje się do międzypolecenia, każdy proces jednej grupy, na przykład grupy A, współtworzy liczbę elementów danych określonych w parametrze sendcount . Te dane są łączone, a wynik jest przechowywany w każdym procesie w drugiej grupie B. Z drugiej strony łączenie danych procesów w grupie B jest przechowywane w każdym procesie w grupie A. Parametry buforu wysyłania w grupie A muszą być spójne z parametrami buforu odbierania w grupie B i na odwrót.
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 |