Bagikan melalui


MPI_Allgather fungsi

Mengumpulkan data dari semua anggota grup dan mengirim data ke semua anggota grup. Fungsi MPI_Allgather mirip dengan fungsi MPI_Gather , kecuali bahwa ia mengirim data ke semua proses alih-alih hanya ke akar. Aturan penggunaan untuk MPI_Allgather sesuai dengan aturan untuk MPI_Gather.

Sintaks

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
);

Parameter

  • sendbuf [in]
    Penunjuk ke data yang akan dikirim ke semua proses dalam grup. Jumlah dan jenis data elemen dalam buffer ditentukan dalam parameter sendcount dan sendtype . Setiap elemen dalam buffer sesuai dengan proses dalam grup.

    Jika parameter comm mereferensikan intrakomunikator, Anda dapat menentukan opsi di tempat dengan menentukan MPI_IN_PLACE di semua proses. Parameter sendcount dan sendtype diabaikan. Setiap proses memasukkan data dalam elemen buffer penerima yang sesuai. Proses ke-nmengirim data ke elemen ke-ndari buffer penerima.

  • sendcount [in]
    Jumlah elemen dalam buffer yang ditentukan dalam parameter sendbuf . Jika sendcount adalah nol, bagian data dari pesan kosong.

  • sendtype [in]
    Jenis data MPI dari elemen dalam buffer kirim.

  • recvbuf [out]
    Penunjuk ke buffer yang berisi data yang diterima dari setiap proses. Jumlah dan jenis data elemen dalam buffer ditentukan dalam parameter recvcount dan recvtype .

  • recvcount
    Jumlah elemen dalam penyangga penerima. Jika jumlahnya nol, bagian data dari pesan kosong.

  • recvtype
    Jenis data MPI dari elemen dalam buffer penerima.

  • Comm
    Pegangan MPI_Comm komunikator.

Nilai kembali

Mengembalikan MPI_SUCCESS pada keberhasilan. Jika tidak, nilai yang dikembalikan adalah kode kesalahan.

Di Fortran, nilai yang dikembalikan disimpan dalam parameter IERROR .

Fortran

    MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
        <type> SENDBUF(*), RECVBUF(*)
        INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

Keterangan

Tanda tangan jenis yang terkait dengan parameter sendtype pada proses harus sama dengan tanda tangan jenis yang terkait dengan parameter recvtype pada proses lain.

Jika parameter komunikasi mereferensikan intrakomunikator, hasil panggilan ke MPI_ALLGATHER(...) adalah seolah-olah semua proses yang dijalankan n memanggil untuk MPI_Gather(sendbuf,sendcount,sendtype,recvbuf,recvcount,recvtype,root,comm) .root = 0 , ..., n-1

Jika parameter comm mereferensikan interkomunikator, maka setiap proses dari satu grup, misalnya, grup A, berkontribusi jumlah item data yang ditentukan dalam parameter sendcount . Data ini digabungkan, dan hasilnya disimpan di setiap proses di grup lain, grup B. Sebaliknya, perangkaian data proses dalam grup B disimpan di setiap proses di grup A. Parameter buffer kirim dalam grup A harus konsisten dengan parameter buffer penerima di grup B, dan sebaliknya.

Jumlah item, yang dikirim oleh proses di grup A, tidak harus sama dengan jumlah item yang dikirim oleh proses dalam grup B. Secara khusus, Anda hanya dapat memindahkan data dalam satu arah dengan menentukan sendcount == 0 untuk komunikasi ke arah terbalik.

Persyaratan

Produk

Paket HPC Pack 2012 MS-MPI Redistributable, HpC Pack 2008 R2 MS-MPI Redistributable Package, HPC Pack 2008 MS-MPI Redistributable Package atau HPC Pack 2008 Client Utilities

Header

Mpi.h; Mpif.h

Pustaka

Msmpi.lib

DLL

Msmpi.dll

Lihat juga

Fungsi Kolektif MPI

MPI_Datatype

MPI_Allgather