mpicc (va shunga o'xshash mpic ++ , mpif90 va boshqalar) - bu MPI ishlatadigan kodni kompilyatsiya qilishda kerakli buyruq satridagi bayroqlarni o'rnatish uchun mavjud bo'lgan kompilyatorni o'raydigan dastur. Odatda, u kodni kompilyatsiya qilish va MPI kutubxonasiga bog'lashga imkon beradigan bir nechta bayroqlarni qo'shadi. [25]
Majmualar - bu MPICH yoki Open MPI kabi mavjud MPI dasturini o'rash orqali boshqa tillarga MPI-ni qo'llab-quvvatlaydigan kutubxonalar.
Ikki boshqariladigan umumiy til infratuzilmasi .NET dasturlari - bu Pure Mpi.NET [26] va MPI.NET, [27] Indiana Universitetida BSD uslubi litsenziyasi bilan litsenziyalangan tadqiqot ishlari . U Mono bilan mos keladi va past kechiktirilgan MPI tarmoq matolaridan to'liq foydalanishi mumkin.
Java
Java-da rasmiy MPI majburiyligi mavjud bo'lmasa-da, bir nechta guruhlar turli darajadagi muvaffaqiyat va moslik bilan ikkalasini ko'paytirishga harakat qilishadi. Dastlabki urinishlardan biri Bryan Carpenterning mpiJava edi [28] asosan mahalliy mahalliy MP MPI kutubxonasiga Java Native Interface (JNI) o'ramalari to'plami , natijada portativligi cheklangan gibrid dasturni amalga oshirdi, uni MPI-ga qarshi tuzish kerak. kutubxonadan foydalanilmoqda.
Shu bilan birga, ushbu original loyiha mpiJava API-ni [29] ( Java uchun amaldagi MPI API-si , C ++ ulanishlarini sinchkovlik bilan kuzatib borgan) ta'rifladi va boshqa Java MPI loyihalari qabul qildi. Muqobil, kam ishlatiladigan API - bu MPJ API, [30] ko'proq ob'ektga yo'naltirilgan va Sun Microsystems kodlash konventsiyalariga yaqinroq bo'lishi uchun mo'ljallangan . API tashqari, Java MPI kutubxona mahalliy MPI kutubxona haqida ham bog'liq bo'lishi mumkin, yoki shunga o'xshash ba'zi esa, Java vazifalarga o'tib xabar amalga oshirish P2P-MPI ham taqdim peer-to-peer funktsional va aralash platforma ishlashiga imkon beradi.
Java / MPI ning eng qiyin qismlari Java-ning xususiyatlaridan kelib chiqadi, masalan, aniq ko'rsatgichlarning etishmasligi va uning ob'ektlari uchun chiziqli xotira manzili maydoni, bu ko'p o'lchovli massivlarni va murakkab ob'ektlarni uzatishni samarasiz qiladi. Vaqtinchalik echimlar, odatda, bir vaqtning o'zida bitta qatorni uzatishni va / yoki yuborish va qabul qilish uchlarida aniq serializatsiya va kastingni amalga oshirishni , bitta o'lchovli qator yordamida C yoki Fortranga o'xshash massivlarni simulyatsiya qilishni va ibtidoiy turlarga ko'rsatgichlarni bitta elementli massivlardan foydalanish, shu bilan dasturlash uslublari Java konventsiyalaridan ancha uzoqlashadi.
Bu erda S-da yozilgan MPI-da "Salom Dunyo" dasturi keltirilgan, ushbu misolda biz har bir protsessorga "salom" xabarini yuboramiz, uni ahamiyatsiz boshqaramiz, natijalarni asosiy jarayonga qaytaramiz va xabarlarni chop etamiz.
/ *
"Salom Dunyo" MPI sinov dasturi
* /
#include
# shu jumladan
#include
# shu jumladan
int main ( int argc , char ** argv )
{
char buf [ 256 ];
int my_rank , num_procs ;
/ * Aloqa uchun zarur bo'lgan infratuzilmani ishga tushirish * /
MPI_Init ( & argc , & argv );
/ * Ushbu jarayonni aniqlang * /
MPI_Comm_rank ( MPI_COMM_WORLD , & my_rank );
/ * Jami qancha jarayon faolligini
aniqlang * / MPI_Comm_size ( MPI_COMM_WORLD , & num_procs );
/ * Shu paytgacha barcha dasturlar bir xil ish olib borgan.
Bu erda biz dasturlarning rollarini ajratish uchun darajani tekshiramiz * /
Do'stlaringiz bilan baham: |