Udostępnij za pośrednictwem


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

Zobacz też

Funkcje zbiorowe MPI

MPI_Gatherv

MPI_Datatype