شبكة بحوث وتقارير ومعلومات
اليوم: ,Thu 11 Dec 2025 الساعة: 11:25 PM


اخر المشاهدات
اخر بحث





- و تضاعف الألم اليوم مع منطقة الصدر بعد أي لقمة أشعر بألم شديد و أشعر بشيء يقف بحلقي | الموسوعة الطبية
- اعاني منذ عامين ارتجاع مريء وكان فقط يسبب لي بلغم مستمر لكن الان اصبح لدي ايضا حساسية روائح اي رائحة قوية تسبب لي حكة في الحنجرة وتدمع العين ماكنت هكذ | الموسوعة الطبية
- [ معدات تنظيم المعارض والمؤتمرات و تجارة قطر ] فيلم ماستر ميدل ايست اند افريكا
- [ رقم هاتف ] عيادة الدكتورة اليسار خوري
- السلام عليكم تبلغ ابنتي 5 سنوات منذ صغرها ﻻحضت تسارع في دقات القلب حتى وان لم تبذل اي مجهود .تم الكشف عنها فتاكدت سﻻمة قلبها.ولكني ﻻ زلت اشعر بعدم الا | الموسوعة الطبية
- [ مؤسسات البحرين ] شركة كاربي لتركيب معدات وسائل الري -التضامن لاصحابها اكرم وعلي الدرازي ... المنطقة الشمالية
- [ وسطاء عقاريين السعودية ] خلف بن موسى بن بادي العتيبي ... الدمام ... المنطقة الشرقية
- هل تناول amoxilav يسبب إسهال مع العلم انه براز لين ولكن عند انتهاء علبة أعطاني حكيم علبة ثانية وكان لدي ديدان في براز قبل إسهال وجريت فحص براز وكان جي | الموسوعة الطبية
- | الموسوعة الطبية
- مساء الخير لو سمحت عندي طلب وياريت تساعدني انا اختي من كام يوم بتعاني من غثيان شديد و مش بتقدر تاكل اي شيء وبتحس نفسها تعبانه وبيجيلها صداع احيانا وبت | الموسوعة الطبية

واجهة تمرير الرسائل أهداف MPI

تم النشر اليوم 11-12-2025 | واجهة تمرير الرسائل أهداف MPI
واجهة تمرير الرسائل أهداف MPI

أهداف 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 include void main (int argc, char *argv[]) int err err MPI_Init(&argc, &argv) printf( Hello world! ) 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 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_Data
    و تستخدم هذه الأنماط في التصريح عن المتحولات فعلى سبيل المثال MPI_Comm some_comm

    تهيئة الـ MPI

    إن إجراء الـ MPI الأول الذي يتم استدعاءه في أي برنامج للـ MPI يجب أن يكون اجراء التهيئة وهو MPI_INIT هذ1 الإجراء يقوم بتأسيس بيئة الـ MPI ويعيد شيفرة خطأ إذا كان هناك مشكلة. إن الإجراء MPI_INIT يتم استدعاءه مرة واحدة فقط في بداية البرنامج C int err …. err MPI_Init(&argc,&argv)

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

    • المعالجة التفرعية
    • حاسب متوازي تصنيف الحاسبات المتوازية
    • تنظيم الكاش في المعالجات التفرعية
    تدقيق واجهة تمرير الرسائل (إم بي آي) إنج 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 غير متوفرة بعد.

    شاركنا رأيك