Bagikan melalui


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

Lihat juga

Fungsi Kolektif MPI

MPI_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatter