fungsi MPI_Scatter
Menyebarkan data dari satu anggota di semua anggota grup. Fungsi MPI_Scatter melakukan inversi operasi yang dilakukan oleh fungsi MPI_Gather .
Sintaks
int MPIAPI MPI_Scatter(
_In_ void *sendbuf,
int sendcount,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parameter
sendbuf [in]
Handel ke buffer yang berisi data yang akan dikirim oleh proses root.Parameter sendbuf diabaikan untuk semua proses non-root.
Jika parameter comm mereferensikan intracommunicator, Anda dapat menentukan opsi di tempat dengan menentukan MPI_IN_PLACE dalam proses root. Parameter recvcount dan recvtype diabaikan. Vektor yang tersebar masih dianggap berisi segmen n , di mana n adalah ukuran grup; segmen yang sesuai dengan proses akar tidak dipindahkan.
sendcount
Jumlah elemen dalam buffer kirim. Jika sendcount adalah nol, bagian data dari pesan kosong.Parameter sendcount diabaikan untuk semua proses non-root.
sendtype
Jenis data setiap elemen dalam buffer.Parameter sendcount diabaikan untuk semua proses non-root.
recvbuf [out]
Handel ke buffer yang berisi data yang diterima pada 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 elemen dalam buffer penerima.Akar
Peringkat proses pengiriman dalam komunikator yang ditentukan.Comm
Pegangan MPI_Comm komunikator.
Menampilkan nilai
Mengembalikan MPI_SUCCESS pada keberhasilan. Jika tidak, nilai yang dikembalikan adalah kode kesalahan.
Di Fortran, nilai yang dikembalikan disimpan dalam parameter IERROR .
Fortran
MPI_SCATTER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR
Keterangan
Efek dari fungsi MPI_Scatter adalah seolah-olah proses akar mengirim pesan dengan menggunakan fungsi MPI_Send . Pesan ini dibagi menjadi n segmen yang sama, satu untuk setiap anggota grup. Segmen ith dikirim ke proses ith dalam grup.
Jika comm adalah intracommunicator, hasilnya seolah-olah akar menjalankan operasi MPI_Send(sendbuf + i*sendcount*extent(sendtype), sendcount, sendtype, I, …)
n send ; dan setiap proses menjalankan penerimaan, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
Tanda tangan jenis yang ditentukan oleh parameter sendcount dan sendtype untuk proses root harus sama dengan tanda tangan jenis yang ditentukan oleh parameter recvcount, dan recvtype untuk semua proses. Oleh karena itu, jumlah data yang dikirim harus sama dengan jumlah data yang diterima antara sepasang proses apa pun. Peta jenis yang berbeda antara pengirim dan penerima masih diizinkan.
Semua parameter fungsi signifikan pada proses root, hanya parameter recvbuf, recvcount, recvtype, root, dan comm yang signifikan pada proses lain. Parameter root dan comm harus identik pada semua proses.
Spesifikasi jumlah dan jenis tidak boleh menyebabkan lokasi apa pun di akar dibaca lebih dari satu kali.
Jika parameter komunikasi mereferensikan interkomunikator, maka panggilan melibatkan semua proses dalam interkomunikator, tetapi dengan satu grup, grup A, yang menentukan proses akar. Semua proses di grup lain, grup B, menetapkan nilai yang sama dalam parameter akar , yaitu peringkat proses akar di grup A. Proses akar menetapkan nilai MPI_ROOT dalam parameter akar . Semua proses lain dalam grup A mengatur nilai MPI_PROC_NULL dalam parameter akar . Data disiarkan dari proses akar ke semua proses dalam grup B. Parameter buffer proses di grup B harus konsisten dengan parameter buffer proses root.
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 |