fungsi MPI_Scatterv
Menyebarkan data dari satu anggota di semua anggota grup. Fungsi MPI_Scatterv melakukan inversi operasi yang dilakukan oleh fungsi MPI_Gatherv .
Sintaks
int MPIAPI MPI_Scatterv(
_In_ void *sendbuf,
_In_ int *sendcounts,
_In_ int *displs,
MPI_Datatype sendtype,
_Out_ void *recvbuf,
int recvcount,
MPI_Datatype recvtype,
int root,
MPI_Comm comm
);
Parameter
sendbuf [in]
Penunjuk 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.
sendcounts [in]
Jumlah elemen yang akan dikirim ke setiap proses. Jika sendcount[i] adalah nol, bagian data dari pesan untuk proses tersebut kosong.Parameter sendcount diabaikan untuk semua proses non-root.
displs [in]
Lokasi data yang akan dikirim ke setiap proses komunikator. Setiap lokasi dalam array relatif terhadap elemen array sendbuf yang sesuai.Dalam sendbuf, sendcounts, dan displs parameter array, elemen nth dari setiap array mengacu pada data yang akan dikirim ke proses komunikator ke n.
Parameter ini hanya signifikan pada proses akar.
sendtype
Jenis data MPI dari setiap elemen dalam buffer.Parameter sendcount diabaikan untuk semua proses non-root.
recvbuf [out]
Penunjuk 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 dalam 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_SCATTERV(SENDBUF, SENDCOUNT, DISPLS, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, ROOT, COMM, IERROR)
<type> SENDBUF(*), RECVBUF(*)
INTEGER SENDCOUNT, SENDTYPE, DISPLS(*), RECVCOUNT(*), RECVTYPE, ROOT, COMM, IERROR
Keterangan
Fungsi MPI_Scatterv memperluas fungsionalitas fungsi MPI_Scatter dengan memungkinkan jumlah data yang bervariasi, seperti yang ditentukan dalam array sendcounts , untuk dikirim ke setiap proses.
Spesifikasi jumlah, jenis, dan perpindahan tidak boleh menyebabkan lokasi apa pun di akar dibaca lebih dari satu kali.
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.
Tanda tangan jenis seperti yang ditentukan oleh parameter sendcount, dan sendtype untuk proses root harus sama dengan tanda tangan jenis seperti 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.
Jika comm adalah intracommunicator, hasilnya seolah-olah akar menjalankan operasi MPI_Send(sendbuf + displs[i]*extent(sendtype), sendcounts[i], sendtype, I, …)
n send ; dan setiap proses menjalankan penerimaan, MPI_Recv(recvbuf, recvcount, recvtype, i,…)
.
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 |