Hal yang saya paling tidak suka tentang MPI adalah berurusan dengan tipe data (yaitu peta data / topeng) karena mereka tidak cocok dengan C + berorientasi objek. boost::mpi
Namun, hanya mendukung MPI 1.1 dari situs web mereka:
boost :: mpi adalah antarmuka ramah C ++ ke Antarmuka Lulus Pesan standar ... Boost.MPI dapat membangun tipe data MPI untuk jenis yang ditentukan pengguna menggunakan perpustakaan Boost.Serialization
Adakah yang punya pengalaman dengan boost::mpi
komputasi ilmiah serius? Apakah Anda merekomendasikannya? Apakah Anda memiliki masalah (masalah penskalaan, masalah kompiler, kesalahan, fitur yang tidak diimplementasikan, kebutuhan akan beberapa fitur mpi 2.2)?
Bisakah Anda mengomentari menggunakan boost::mpi
alih-alih menggunakan implementasi MPI C dari C ++? Bisakah Anda menggabungkan keduanya (gunakan boost :: mpi saat Anda bisa, C-MPI di tempat lain)?
Apakah Anda tahu ada kode ilmiah besar yang digunakan boost::mpi
?
Jawaban:
Saya selalu berpikir bahwa kita harus menggunakannya dalam proyek kita sendiri, kesepakatan.II, karena ini lebih tinggi daripada MPI murni dan dapat menyimpan beberapa baris kode di sana-sini. Yang mengatakan, apa yang saya pelajari selama bertahun-tahun adalah bahwa sebagian besar kode tingkat tinggi sebenarnya tidak memiliki banyak kode MPI untuk memulai - 600.000 baris kode dalam kesepakatan. Saya hanya punya ~ 50 panggilan ke MPI. Itu tentu saja jauh lebih sedikit daripada paket seperti PETSc, tapi saya pikir itu benar bahwa sebagian besar kode memiliki lebih sedikit panggilan MPI daripada yang diharapkan pada awalnya dan bahwa, akibatnya, manfaat menggunakan sesuatu yang tingkatannya lebih tinggi tidak sebesar satu mungkin berpikir sekilas.
Apa yang kemudian menjadi intinya adalah agar Anda mempertimbangkan apa kompromi itu. Berapa banyak MPI yang perlu Anda gunakan, dan bagaimana hal itu dibandingkan dengan upaya tambahan yang diperlukan untuk membangun dan menghubungkan dengan perpustakaan eksternal.
sumber
Sejauh yang saya tahu,
boost::mpi
hanyalahc++
pembungkusC
API. Dengan demikian, Anda harus dapat menggunakanboost::mpi
dan beralih keC
API setiap kali beberapa fungsi tidak diterapkan. Memang, dari halaman web mereka:Saya belum menggunakannya sendiri, dan tidak tahu perpustakaan utama yang melakukannya, tapi saya berharap itu hanya menjadi pembungkus yang ringan dan karena itu tidak perlu khawatir tentang kinerja dibandingkan dengan
C
API.sumber