Bagikan melalui


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

Lihat juga

Fungsi Kolektif MPI

MPI_Datatype

MPI_Gather

MPI_Gatherv

MPI_Scatterv