واجهة تمرير الرسائل

واجهة تمرير الرسائل (بالإنجليزية: Message Passing Interface MPI) هي واجهة برمجة التطبيقات التي تسمح للأعمال (processes) بالتواصل فيما بينها من خلال تبادل رسائل. الطريقة مستعملة أيضا بين البرمجيات المتوازية مشغلة على حاسوب عملاق أو حاسوب عنقودي حيث الوصول لذاكرة غير محلية مكلف للغاية.
يرجع الفضل في تطوير الواجهة إلى ويليام جروب وإروين لوسك وغيرهما.
قد يحتاج المبرمج لحل مشاكل ضخمة، والتعامل مع مجال ذاكري أكبر، أو ربما قد يحتاج ببساطة لحل مشاكل بسرعة أكبر من الممكن تحقيقها على حواسيب تسلسلية. بالإمكان عندها الانتقال إلى البرمجة التفرعية والحواسيب التفرعية للتعامل مع هذه الاحتياجات. إن استخدام أساليب البرمجة التفرعية على حواسيب تفرعية يمنحك الوصول لموارد ذاكرية أكبر وموارد وحدة المعالجة المركزية CPU غير متاحة على حواسيب تسلسلية. أحد الأساليب الأساسية في البرمجة التفرعية هو استخدام مكتبات تمرير الرسائل. تؤمن هذه المكتبات إدارة نقل المعطيات بين مقاطع من برامج تفرعية تعمل (عادةً) على معالجات متعددة في بنية حوسبة تفرعية

نموذج تمرير الرسائل

تم إعداد MPI كأداة قياسية لنموذج "تمرير الرسائل" في البرمجة التفرعية.
- يتألف الحساب التفرعي من عدد من العمليات، تعمل كلُ منها على معطيات محلية. كل عملية تمتلك متحولات محلية خاصة بها، وليس هناك من آلية تمكّن أي عملية من الوصول المباشر لذاكرة العملية الأخرى.
- تشارك المعطيات بين العمليات يتحقق عبر تمرير الرسائل، ويتم ذلك، عبر الإرسال والاستقبال الصريح للمعطيات بين العمليات.
لاحظ أن النموذج يتضمن عمليات، والتي لا تحتاج –من ناحية المبدأ- لأن يتم تنفيذها على معالجات مختلفة. في هذا المنهاج التعليمي، سيتم عموماً افتراض أن عملياتٍ مختلفة يتم تنفيذها على معالجاتٍ مختلفة وأن المصطلحين "عمليات" و"معالجات" يتم استخدامهما بشكل قابل للتبادل (على سبيل المثال، عند الحديث عن اتصال المعالجات مع بعضها).
السبب الأساسي في منفعة هذا النموذج هو عموميته المفرطة. أساساً، أي نوع من الحوسبة التفرعية يمكن أن يتم طرحه بأسلوب تمرير الرسائل. وبالإضافة، فإن هذا النموذج:
- يمكن تحقيقه على تنوع كبير من المنصات، من بنية ذاكرة مشتركة متعددة المعالجات إلى شبكات محطات العمل وحتى الأجهزة ذات المعالج الوحيد.
- يسمح عموماً بالمزيد من التحكم على موقع وتدفق المعطيات ضمن البرنامج التفرعي الموجود فيه، على سبيل المثال: بنية الذاكرة المشتركة. يمكن لمثل هذه البرامج أن تحقق أداءً أعلى باستخدام الأسلوب الصريح في تمرير الرسائل. وبالفعل، فإن الأداء هو سبب رئيسي في عدم اختفاء نموذج تمرير الرسائل من عالم البرمجة التفرعية

ما هي MPI؟

MPI هي اختصار لـ "Message passing interface". وهي مكتبة من التوابع (بلغة C) تقوم بتضمينها ضمن شيفرة المصدر لإنجاز اتصال للمعطيات بين المعالجات.
تم تطوير MPI بعد عامان من المناقشة المقادة بواسطة منتدى MPI، مجموعة من حوالي 60 شخصاً يمثّلون حوالي 40 منظمة.
تم تعريف النسخة القياسية MPI-1 في ربيع عام 1994.
- عرّفت هذه النسخة كلاً من الأسماء، تسلسلات الاستدعاء، ونتائج التوابع والروتينات الفرعية المستدعاة من قبل C.
جميع وسائل MPI يجب أن تتبع لهذه القواعد المعرّفة، هذا يضمن تحسين المحمولية. يجب على جميع برامج MPI أن يتم ترجمتها وتنفيذها على أي منصة تدعم MPI القياسية.
- التنفيذ التفصيلي الفعلي للمكتبة تم تركه للشركات الخاصة، والذين أصبحوا هكذا أحراراً في إنتاج نسخاً مصغّرة لآلاتهم.
- أغلب إصدارات MPI القياسية هي متاحة لتنوع كبير من منصات العمل.
أيضاً تم تعريف النسخة القياسية MPI-2. جاءت هذه النسخة بميزات إضافية غير محتواة في MPI-1، ويتضمن ذلك أدوات للدخل/الخرج التفرعي، دعم لغات C++ وFortran90، وإدارة ديناميكية للعملية. في الوقت الحاضر، تتضمن بعض نسخ MPI أجزاءً من ميزات النسخة القياسية MPI-2 لكن النسخة الكاملة من MPI-2 غير متوفرة بعد.