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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk