Parallel computing memang topik yang menarik dan ini juga merupakan salah satu topik research interest gw. Kemarin saya mendapatkan email dari sa;ah satu mahasiswa di surabaya yang masuk melalui blog ini dan menanyakan apakah parallel computing yang melalui MPI/MPICH dan OpenMP bisa menggunakan .NET/C#. Well...secara default, memang C# atau .NET secara umum tidak bisa memakai MPI/MPICH dan OpenMP secara langsung. Ada dua alternatif kalau kita mau menerapkan parallel computing via MPI/MPICH dan OpenMP dengan C#/.NET yaitu
- Membuat wrapper object dari MPI/MPICH melalui invoke (ini untuk kasus
kalau kita ingin menggunakan library MPI/MPICH..sedangkan OpenMP itu
bukan library tetapi open standard untuk parallel computing).
- Memodifikasi compiler .NET (CLR Compiler) supaya support standard parallel computing syntax seperti untuk kasus OpenMP
Untuk kasus wrapper object dari MPI/MPICH untuk C#, anda bisa memanfaat penelitian yang dilakukan oleh mahasiswa Indiana University, MPI.NET [V]. Salah satu hasil paper research yang berjudul "Using MPI with C# and the Common Language Infrastructure" yang mencoba membuat wrapper object yang dibandingkan dengan CLI Binding dan P/Invoke..lengkapnya paper ini dapat didownload di sini [V], kesimpulan dapat dilihat pada gambar yang menunjukkan performance dari MPI.NET pada gambar dibawah inii
Khusus untuk modifikasi compiler .NET (CLR Compiler), bisa memanfaatkan CLR Compiler ROTOR, kontak om Zeddy (Acedemic Evangelist) untuk minta source code dari CLR Compiler (FREE untuk akademisi). Next generation .NET Framework (>= 3) ini kemungkinan besar akan support MPI dan OpenMP....so tunggu aja.
Secara personal, saya sendiri merekomendasikan menggunakan C/C++ untuk parallel computing. Banyak keuntungan yang didapatkan penggunaan C/C++ ini baik menggunakan compiler Visual C++ maupun GNU C/C++.