Sdílet prostřednictvím


MPI_Allgatherv funkce

Shromáždí proměnlivé množství dat od každého člena skupiny a odešle data všem členům skupiny. Funkce MPI_Allgatherv se podobá MPI_Gatherv s tím rozdílem, že výsledek obdrží všechny procesy, nikoli pouze kořen. Blok dat odeslaný z procesu jje přijat každým procesem a umístěn do jth bloku vyrovnávací paměti recvbuf. Všechny tyto bloky nemusí mít stejnou velikost.

Syntaxe

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]
    Ukazatel na data, která se mají odeslat všem procesům ve skupině. Počet a datový typ prvků ve vyrovnávací paměti jsou zadány v parametrech sendcount a sendtype . Každý prvek ve vyrovnávací paměti odpovídá procesu ve skupině.

    Pokud parametr comm odkazuje na intrakomunikator, můžete zadat místní možnost zadáním MPI_IN_PLACE ve všech procesech. Parametry sendcount a sendtype jsou ignorovány. Každý proces zadává data do odpovídajícího elementu vyrovnávací paměti pro příjem. N.proces odešle data do nth elementu vyrovnávací paměti pro příjem.

  • sendcount
    Počet datových prvků, které tento proces odesílá ve vyrovnávací paměti zadané v parametru sendbuf . Pokud je prvek v sendcount nula, datová část zprávy z tohoto procesu je prázdná.

  • sendtype
    Datový typ MPI prvků ve vyrovnávací paměti pro odesílání.

  • recvbuf [out]
    Ukazatel na vyrovnávací paměť, která obsahuje data přijatá z jednotlivých procesů. Počet a datový typ prvků ve vyrovnávací paměti jsou zadané v parametrech recvcount a recvtype .

  • recvcounts [in]
    Počet datových prvků z jednotlivých procesů komunikátoru v vyrovnávací paměti pro příjem.

  • displs [in]
    Umístění dat z jednotlivých procesů komunikátoru vzhledem k parametru recvbuf .

    V polích parametrů recvbuf, recvcounts a displs odkazuje nth prvek každého pole na data, která jsou přijata z n-tého procesu komunikátoru.

  • recvtype
    Datový typ MPI každého prvku ve vyrovnávací paměti.

  • Komunikace
    Popisovač MPI_Comm communicatoru.

Vrácená hodnota

Vrátí MPI_SUCCESS při úspěchu. V opačném případě je návratovou hodnotou kód chyby.

V nástroji Fortran je vrácená hodnota uložena v parametru 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

Poznámky

Pravidla použití pro MPI_Allgatherv odpovídají pravidlům pro MPI_Gatherv.

Podpis typu přidružený k parametru sendtype v procesu musí být roven podpisu typu, který je přidružený k parametru recvtype v jakémkoli jiném procesu.

Pokud parametr comm odkazuje na intrakomunikator, výsledek volání MPI_Allgatherv(...)je, jako by všechny procesy spustily volání MPI_GatherV(sendbuf,sendcount,sendtype,recvbuf,recvcounts,displs,recvtype,root,comm), pro root = 0 , ..., n-1.

Pokud parametr comm odkazuje na interkomunikátor, pak každý proces jedné skupiny, například skupina A, přispívá počtem datových položek, které jsou zadány v parametru sendcount . Tato data jsou zřetězena a výsledek je uložen v každém procesu ve druhé skupině B. Naopak zřetězení dat procesů ve skupině B je uloženo v každém procesu ve skupině A. Parametry vyrovnávací paměti pro odesílání ve skupině A musí být konzistentní s parametry vyrovnávací paměti pro příjem ve skupině B a naopak.

Požadavky

Produkt

HPC Pack 2012 MS-MPI Redistributable Package, HPC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package nebo HPC Pack 2008 Client Utilities

Hlavička

Mpi.h; Mpif.h

Knihovna

Msmpi.lib

DLL

Msmpi.dll

Viz také

Kolektivní funkce MPI

MPI_Gatherv

MPI_Datatype