Bagikan melalui


MPI_Comm_split (Fungsi MPI_Comm_split)

Mempartisi grup yang terkait dengan komunikator yang ditentukan ke dalam sejumlah subkelompok yang terputu-putus.

Sintaks

int MPIAPI MPI_Comm_split(
        MPI_Comm comm,
        int      color,
        int      key,
  _Out_ MPI_Comm *newcomm
);

Parameter

  • Comm
    Komunikator yang akan dipisahkan.

  • Warna
    Komunikator baru tempat proses panggilan akan ditetapkan. Nilai warna harus tidak negatif.

    Jika proses menentukan nilai warnaMPI_UNDEFINED, fungsi mengembalikan MPI_COMM_NULL dalam parameter newcomm ke proses panggilan.

  • kunci
    Peringkat relatif dari proses panggilan dalam grup komunikator baru. Untuk detail tentang menggunakan parameter kunci dan warna , lihat Keterangan.

  • newcomm [out]
    Saat kembali, berisi handel ke komunikator baru.

Mengembalikan 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_COMM_SPLIT(COMM,COLOR,KEY,NEWCOMM,IERROR)
        INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR

Keterangan

Ini adalah fungsi kolektif, tetapi setiap proses dapat menentukan nilai yang berbeda untuk parameter warna dan kunci .

Ini adalah mekanisme yang sangat kuat untuk membagi sekelompok proses komunikasi tunggal menjadi sejumlah subkelompok sewenang-wenang. Jumlah subgrup ditentukan oleh jumlah warna yang ditentukan di semua proses. Komunikator yang dihasilkan tidak tumpang tindih. Memba lagi komunikator dengan cara ini berguna untuk mendefinisikan hierarki komputasi, seperti untuk aljabar multigrid atau linier.

Setiap subgrup berisi semua proses yang menentukan nilai yang sama untuk parameter warna . Dalam setiap subgrup, proses diberi peringkat dalam urutan yang ditentukan oleh nilai parameter kunci , dengan ikatan rusak sesuai dengan peringkatnya di grup lama.

Dengan communicator intracommunicator, panggilan ke MPI_COMM_CREATE(comm, group, new-comm) setara dengan panggilan ke MPI_COMM_SPLIT(comm, color, key, newcomm), di mana proses yang merupakan anggota grup menentukan jumlah grup, berdasarkan penomoran unik dari semua grup yang terputus-putus, untuk parameter warna dan peringkatnya dalam grup untuk parameter kunci . Semua proses yang bukan anggota grup menentukan MPI_UNDEFINED untuk parameter warna .

Untuk satu warna, nilai kunci tidak harus unik. Fungsi MPI_Comm_split mengurutkan proses sesuai dengan nilai parameter kunci , dan mengurutkan ikatan berdasarkan peringkat relatifnya dalam grup sumber. Jika nilai yang sama ditentukan untuk semua parameter kunci , maka semua proses dalam warna tertentu memiliki urutan peringkat relatif yang sama dengan yang mereka miliki di grup induk mereka.

Untuk intrakomunikator, fungsi MPI_Comm_split dan MPI_Comm_create memberikan kemampuan serupa untuk membagi grup komunikasi menjadi subgrup yang terputus-putus.

Fungsi MPI_Comm_split digunakan ketika beberapa proses tidak memiliki informasi lengkap dari anggota lain dalam grup mereka, tetapi semua proses memiliki warna grup tempat mereka berada. Dalam hal ini, implementasi MPI menemukan anggota grup lain melalui komunikasi.

Fungsi MPI_Comm_create digunakan ketika semua proses memiliki informasi lengkap dari anggota grup mereka. Dalam hal ini, implementasi MPI dapat menghindari komunikasi tambahan yang diperlukan untuk menemukan keanggotaan grup.

Komunikator yang dibuat oleh MPI_Comm_split tidak dapat tumpang tindih. Anda dapat memanggil fungsi MPI_Comm_split beberapa kali untuk mengatasi batasan ini. Anda dapat membuat beberapa struktur komunikasi yang tumpang tindih dengan cara ini. Penggunaan kreatif parameter warna dan kunci dalam operasi pemisahan tersebut didorong.

Hasil dari fungsi MPI_Comm_split pada interkomunikator adalah bahwa proses di sebelah kiri dengan warna yang sama dengan proses di sebelah kanan dikombinasikan untuk membuat interkomunikator baru. Parameter kunci menentukan peringkat relatif proses di setiap sisi interkomunikator. Komunikator baru dengan handel MPI_COMM_NULL dikembalikan ke proses yang menentukan MPI_UNDEFINED sebagai warnanya, atau menentukan warna yang hanya ditentukan di satu sisi interkomunikator.

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 Komunikator MPI

MPI_Comm_create