Udostępnij za pośrednictwem


MPI_Allgather, funkcja

Zbiera dane ze wszystkich członków grupy i wysyła dane do wszystkich członków grupy. Funkcja MPI_Allgather jest podobna do funkcji MPI_Gather , z tą różnicą, że wysyła dane do wszystkich procesów zamiast tylko do katalogu głównego. Reguły użycia MPI_Allgather odpowiadają regułom MPI_Gather.

Składnia

int MPIAPI MPI_Allgather(
  _In_  void         *sendbuf,
  _In_  int          sendcount,
  _In_  MPI_Datatype sendtype,
  _Out_ void         *recvbuf,
        int          recvcount,
        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 [in]
    Liczba elementów w buforze określonym w parametrze sendbuf . Jeśli pole sendcount ma wartość zero, część danych komunikatu jest pusta.

  • sendtype [in]
    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 .

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

  • recvtype
    Typ danych MPI elementów w buforze odbierania.

  • 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_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Uwagi

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_ALLGATHER(...) taki, jakby wszystkie procesy wykonały n wywołań dla MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm)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.

Liczba elementów wysyłanych przez procesy w grupie A nie musi być równa liczbie elementów wysyłanych przez procesy w grupie B. W szczególności można przenosić dane tylko w jednym kierunku, określając wartość sendcount == 0 dla komunikacji w odwrotnym kierunku.

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_Allgather