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

عودة للموسوعة

قابلة تمرير الرسائل (بالإنجليزية: 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 غير متوفرة بعد.

أهداف MPI

الأهداف الرئيسية المحققة بواسطة MPI هي

  1. ضمان محمولية الشيفرة المصدر. برامج MPI ينبغي ترجتمها وتطبيقها على أي منصة.
  2. السماح بتطبيق فعال عبر مجال من البنى.

توفّر MPI أيضاً

  • مقدار هائل من الوظيفية. يتضمن عدداً من مختلف أنواع الاتصال، روتينات خاصة لأكثر العمليات "المتداخلة" شيوعاً، والقدرة على معالجة أنواع المعطيات والبنى المعرّفة بواسطة المستخدم.
  • دعماً للبنى التفرعية الهجينة

بعض النقاط الخارجة عن مجال MPI-1

  1. الآلية السليمة تماماً في إطلاق برنامج MPI. عموماً،قد يكون هذا الأمر تابعاً لاستقلالية المنصة وستحتاج لمراجعة الوثائق المحلية الخاصة بكل منصة لضمان التطبيق الدقيق تماماً.
  2. الإدارة الديناميكة للعملية كتغيير عدد العمليات في فترة وقت التطبيق للبرنامج.
  3. التنقيح.
  4. الدخل/الخرج التفرعي.

جميع هذه النقاط أصبحت متاحة في نسخة MPI-2.

لِمَ نستخدم (لا نستخدم) MPI؟

ينبغي عليك استخدام MPI عندما تكون بحاجة إلى:

  • كتابة شيفرة تفرعية ذات محمولية.
  • تحقيق أداء عالي في البرمجة التفرعية، على سبيل المثال عند كتابة مخطات تفرعية.
  • التعامل مع معضلة تتطلب علاقات غير نظامية أوديناميكية بين المعطيات، ولايمكن التعامل معها بأسلوب "تفريع المعطيات".

لا ينبغي عليك استخدام MPI عندما:

  • تستطيع الحصول على أداء فعال ومحمولية جيدة باستخدام أسلوب تفريع المعطيات (HPF) أوبنية الذاكرة المشهجرة Open MPI.
  • تستطيع استخدام مخطة موجودة مسبقاً من الروتينات التفرعية (قد تكون هي نفسها مكتوبة بواسطة MPI).
  • لا تكون بحاجة أصلاً للتفريع..!

الميزات الأساسية لبرامج تمرير الرسائل

تتألف برامج تمرير الرسائل من عدة مقاطع من برنامج تسلسلي والذي يتخاطب عبر استنادىءات مخطية. هذه الاستنادىءات يمكن تصنيفها مبدأياً إلى أربعة أصناف:

  1. استنادىءات تُستخدم لعمليات تهيئة وإدارة وإنهاء الاتصال.
  2. استنادىءات تُستخدم للاتصال بين "أزواج" المعالجات.
  3. استنادىءات تُستخدم لإنجاز عمليات الاتصال بين "مجموعات" من المعالجات.
  4. استنادىءات تُستخدم لخلق أنواع معطيات كيفية.

الصنف الأول من الاستنادىءات: يتألف من استنادىءات لبدء عمليات الاتصال وتحديد عدد المعالجات المستخدمة وتكوين مجموعات جزئية من المعالجات وتحديد أياً من المعالجات يقوم بتطبيق ذلك الجزء المحدد من البرنامج.

الصنف الثاني من الاستنادىءات:، يُدعى عمليات الاتصال من نوع نقطة-إلى-نقطة، ويتألف من أنواع مختلفة من عمليات الإرسال والاستقبال.

الصنف الثالث من الاستنادىءات: هوتعبير عن العمليات المتداخلة التي تؤمن التزامن أوأنواعاً أخرى محددة من عمليات الاتصال المعرّفة جيداً بين مجموعات من المعالجات إضافةً إلى استنادىءات تنجز عمليات الاتصال/الحساب المتداخلة.

الصنف الأخير من الاستنادىءات يؤمن مرونة في الاتصال مع بُنى المعطيات المعقدة.

البرنامج الأول: Hello World!

بلغة C :

\#include <stdio.h>

\#include <mpi.h>

void main (int argc, char *argv[]) {

int err; err = MPI_Init(&argc, &argv);

printf("Hello world!\n");

err = MPI_Finalize();

ملاحظات سريعة على البرنامج:

  • تمتلك إجراءات/روتينات MPI أسماءً تبدأ بـ _MPI
  • يوجد ملف ترويسة MPI (mpi.h أوmpif.h) يحتوي على تعاريف وتعريفات أولية للتوابع المستوردة بواسطة تعبير "include".
  • تعيد روتينات MPI شيفرة خطأ تحدد نجاح عمل الروتين من عدمه
  • كل عملية تنفّذ نسخة من الكود المعطى. لذلك، عند العمل على أربع معالجات، سيكون خرج البرنامج كالتالي:

Hello world!

Hello world!

Hello world!

Hello world!

  • يمكن، على أية حال، للعمليات حتى تقوم بإنجاز أشياء مختلفة باستخدام أساليب أخرى، مثل:

if (I am processor 1)

...do something...

if (I am processor 2)

...do something else...

البنية العامة لبرنامج الـ MPI

جميع برامج الـ MPI لها البنية العامة التالية :

  • تضمين ملفات الترويسه
  • التصريح عن المتغيرات
  • تهيئة وابتدء بيئة الـ MPI
  • إجراء الحسابات واتصالات الـ MPI
  • أغلاق اتصالات الـ MPI

والآن لنرى ما معنى جميع منها على حدا ملف الترويسة للـ MPI هوملف يحتوي على التعريفات ونماذج التوابع الخاصة بـ الـ MPI التصريح عن المتغيرات وفيه يتم التصريح عن المتغيرات التي يفترض أن نستخدمها في البرنامج تهيئة البيئة عن طريق استدعء التابع الخاص بذلك سنراه لاحقا جميع العمليات الحسابية والاتصالات بين توابع الـ MPI يجب حتى تتم بعد عملية التهيئة للبيئة وبعد ذلك يتم إلاق عملية التهئة عن طريق تابع خاص سنراه لاحقاولا يجوز استنادىء اي تابع بعد أغلاق التهيئة كما أنه من الضروري ان نذكر أنّ اي عملية لا تصل ال فترة النهاية سيبدوالبرنامج المنقذ لها كما لوأنه في حالة جمود

ملفات الترويسة للـ MPI

إنّ ملفات الترويسة للـ MPI تحتوي على نماذج التوابع والاستنادىءات الخاصة بالـ MPI كما تحتوي على تعريفات الـ Macros والثوابت الخاصة والأنواع المستعملة في الـ MPI حيث تم استخدام حدثة Include مع اسم ملف الترويسة في اي ملف مصدر Source file من أجل تضمين التوابع والثوابت الخاصة بالـ MPI على النحوالتالي C :

\#include <mpi.h>

مصطلحات التسمية المستخدمة في الـ MPI

MPI_Xxxxx(parameters….)

وكمثال عليها

MPI_Init(&argc,&argv).

أمّا عن أسماء ثوابت الـ MPI فتستخدم الـ الأحرف الكبيرة وكمثال عليها : MPI_COMM_WORLD,MPI_REAL

إجراءات الـ MPI والقيم المعادة

يتم تمثيل إجراءات الـ MPI في لغة الـ C على شكل توابع Functions ومن جهة أخرى نلاحظ أنّه وبشكل عام يتم إعادة رقم الخطأ طالما حدوثه مما يسمح لك باختبار نجاح العملية التي تنفذ الإجراء أوفشلها. في لغة الـ C : تعيد توابع الـ MPI رقم سليم من خلاله نستطيع تحديد حالة انتهاء الاستنادىء

Int err ;

.........

.........

err = MPI_Init(&argc,&arcv);

إنّ شيفرة الخطأ تعيد الـ MPI_SUCCESS إذا نجح الاستنادىء وهذا يعني أنّ قيمة العدد السليم تكون مساوية للقيمة المسندة بشكل سابق للـ MPI_SUCCESS إلى غير ذلك يمكن فحص نجاح الفهمية أولا.

C: If (err = MPI_SUCCESS)

{

.....

.....

Routines run correctly

.....

.....

وطالما حدوث الخطأ يمثل العدد السليم المعاد قيمة تدل على خطأ معين. الأنواع الأساسية لمعطيات الـ MPI في لغة الـ C الجدول التالي يوضح هذه الأنواع وتقاطعاتها مع الأنماط في C

نمط الـ C

نمط الـ MPI

Signed char

MPI_CHAR

Signed short int

MPI_SHORT

Signed int

MPI_INT

Signed  long int

MPI_LONG

Unsigned char

MPI_UNSIGNED_CHAR

Unsigned short int

MPI_UNSIGNED_SHORT

Unsigned int

MPI_UNSIGNED

Unsigned long int

MPI_UNSIGNED_LONG

Float

MPI_FLOAT

Double

MPI_DOUBLE

Long double

MPI_LONG_DOUBLE

(none)

MPI_BYTE

(none)

MPI_PACKED

أنماط معطيات خاصة بـ MPI

في لغة الـ C تزود الـ MPI الكثير من أنماط المعطيات الخاصة عملى سبيل المثال

  • MPI_Comm – a communicator
  • MPI_Status – بنية تتضمن الكثير من المعلومات عن حالات الاستنادىءات في الـ MPI
  • MPI_Datatype

وتستخدم هذه الأنماط في التصريح عن المتحولات عملى سبيل المثال MPI_Comm some_comm ;

تهيئة الـ MPI

إن إجراء الـ MPI الأول الذي يتم استنادىءه في أي برنامج للـ MPI يجب حتىقد يكون اجراء التهيئة وهوMPI_INIT هذ1 الإجراء يقوم بتأسيس بيئة الـ MPI ويعيد شيفرة خطأ إذا كان هناك مشكلة. إن الإجراء MPI_INIT يتم استنادىءه مرة واحدة فقط في بداية البرنامج

C: int err;

….

err = MPI_Init(&argc,&argv);

مواضيع متعلقة

  • المعالجة التفرعية
  • تصنيف الحاسبات المتوازية
  • تنظيم الكاش في المعالجات التفرعية

وصلات خارجية

  • MPI specification
  • MPI Tutorial
  • Parallel Programming with MPI
  • MacMPI
  • MPI over SCTP
  • MPI DMOZ category
  • Open MPI web site
  • LAM/MPI web site

المراجع

  1. ^ "معلومات عن قابلة تمرير الرسائل على مسقط academic.microsoft.com". academic.microsoft.com. مؤرشف من الأصل في 07 أبريل 2020.
  • Using MPI - 2nd Edition: by William Gropp, Ewing Lusk, and Anthony Skjellum
  • Parallel Programming With MPI by Peter Pacheco
  • MPI: The Complete Reference (2-volume set) by Marc Snir and William Gropp
  • Parallel Programming in C with MPI and أوبن أم بي by Michael J. Quinn
تاريخ النشر: 2020-06-01 18:33:56
التصنيفات: بنية الحاسوب, حوسبة متوازية, واجهات برمجة التطبيقات, مقالات للتدقيق العلمي منذ ديسمبر 2010, جميع المقالات التي تحتاج لتدقيق علمي, جميع المقالات التي بحاجة لصيانة, مقالات تحتوي نصا بالإنجليزية, بوابة برمجة الحاسوب/مقالات متعلقة, جميع المقالات التي تستخدم شريط بوابات

مقالات أخرى من الموسوعة

سحابة الكلمات المفتاحية، مما يبحث عنه الزوار في كشاف:

آخر الأخبار حول العالم

المبعوث الأممي لليبيا: وصلنا لمرحلة حاسمة على طريق الانتخابات

المصدر: العربية - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:18:39
مستوى الصحة: 86% الأهمية: 85%

السلطات الروسية تسقط التهم الموجهة لبريغوجين ومقاتلي فاغنر

المصدر: الأيام 24 - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:20:17
مستوى الصحة: 68% الأهمية: 81%

واشنطن: سنلاحق مجموعة فاغنر في كل مكان

المصدر: العربية - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:18:22
مستوى الصحة: 90% الأهمية: 99%

بعد إنهاء تمرد فاغنر.. من سيرث "مجرة" بريغوجين في إفريقيا؟

المصدر: العربية - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:41
مستوى الصحة: 87% الأهمية: 97%

رسميا.. مانشستر سيتي يضم كوفاتشيتش من تشيلسي

المصدر: RT Arabic - روسيا التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:18
مستوى الصحة: 93% الأهمية: 89%

باريس سان جيرمان يكشف موعد الإعلان عن مدربه الجديد

المصدر: RT Arabic - روسيا التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:19
مستوى الصحة: 82% الأهمية: 88%

بيرلو يعود للتدريب في إيطاليا من بوابة سامبدوريا

المصدر: RT Arabic - روسيا التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:17
مستوى الصحة: 83% الأهمية: 94%

إشادة واسعة بمبادرة تكريم أستاذ متقاعد بخروف العيد

المصدر: الأيام 24 - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:20:20
مستوى الصحة: 61% الأهمية: 85%

ترمب: سأحاسب بايدن على فترته حين أعود للبيت الأبيض

المصدر: العربية - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:18:24
مستوى الصحة: 86% الأهمية: 90%

هكذا أفسد ميسي صفقة انتقال أمرابط إلى برشلونة

المصدر: الأيام 24 - المغرب التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:20:26
مستوى الصحة: 64% الأهمية: 78%

إيران.. مدمرة روسية ترسو في ميناء أنزلي شمال البلاد (صورة)

المصدر: RT Arabic - روسيا التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:16
مستوى الصحة: 83% الأهمية: 98%

رئيس بيلاروسيا: طلبت من بوتين عدم اغتيال قائد فاغنر

المصدر: العربية - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:42
مستوى الصحة: 77% الأهمية: 100%

الأمن المصري يحبط عملية تهريب بالملايين في سيناء

المصدر: RT Arabic - روسيا التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:15
مستوى الصحة: 80% الأهمية: 87%

المخابرات الأميركية تقيّم: بريغوجين لن يبقى في بيلاروسيا

المصدر: العربية - السعودية التصنيف: سياسة
تاريخ الخبر: 2023-06-27 21:17:40
مستوى الصحة: 82% الأهمية: 86%

تحميل تطبيق المنصة العربية