سؤال

لدي برنامج تم تنفيذه بلغة C++ وأريد الآن إضافة دعم MPI.يوجد رابط MPI لـ C++، مع مساحة الاسم MPI وكل شيء.

في حالتي لدي كائن محدد مناسب ليكون عملية متوازية في المجموعة.

أسئلتي هي:

  • هل قام أحد بشيء مثل هذا من قبل؟هل يمكنني الحصول على بعض النصائح حول أفضل السبل لتنفيذ ذلك؟
  • كيف يمكنني تهيئة MPI داخل المنشئ؟بعد تهيئة MPI داخل مُنشئ الفصل، هل سيتم موازنة كافة الاستدعاءات الوسيطة أيضًا؟

على سبيل المثال:

MyClass obj;

x = x; //this will be parallelized ?
onj.calc();

y = x++; //this will be parallelized ?

z = obj.result();
هل كانت مفيدة؟

المحلول

أود حقا أن أوصي بالتقاط كتاب جروب MPI, ، إنه يساعد حقًا في MPI الأساسي!

نصائح أخرى

لا يقوم MPI بموازاة أي شيء تلقائيًا، بل يمنحك فقط واجهة لإرسال البيانات بين العقد.تتم كتابة التعليمات البرمجية الخاصة بك وتشغيلها كرمز تسلسلي معتاد بشكل مستقل على كل عقدة، ومن حين لآخر تقوم بإرسال البيانات إلى عقدة أخرى أو تحاول تلقي البيانات من عقدة أخرى.

أثناء التداخل مع موضوع قديم، وجدت OpenMPI و تعزيز::MPI لطيف للعمل مع.قد يكون تصميم المكتبة الموجه للكائنات مثبتًا بعض الشيء، لكنني وجدت أنه من الأفضل العمل معه أكثر من MPI النقي، خاصة مع التسلسل التلقائي للعديد من الأنواع وواجهة قابلة للتمديد إلى حد ما لوظائف التجميع/التصغير بالإضافة إلى تسلسل أنواع المستخدمين.

كمعلومات أساسية:

معظم التطبيقات التي تستخدم MPI مكتوبة بلغة Fortran أو C.تتم كتابة كل تطبيق رئيسي لـ MPI بلغة C.

يعد دعم روابط MPI C++ سطحيًا في أحسن الأحوال:بعض أنواع بيانات MPI غير متوفرة (على سبيل المثال:MPI_DOUBLE)، توجد مشكلات في الإدخال/الإخراج وترتيب تضمين الرؤوس في الملفات المصدر.توجد مشكلات تتعلق بتشويه الأسماء إذا تم إنشاء مكتبة MPI باستخدام لغة C وتم إنشاء التطبيق باستخدام Fortran أو C++.تحتوي الأسئلة الشائعة حول mpich2 على إدخالات للمساعدة في حل هذه المشكلات.أنا أقل دراية بـ Open MPI وسلوكها الخاص مع Fortran وC++.

لأسئلتك المحددة:

أعتقد أن لديك سوء فهم أساسي حول ماهية MPI وما لا تمثله، وكيف يجب أن يتفاعل رمز التطبيق مع مكتبات MPI.

البرمجة المتوازية مع MPI يعد مرجعًا ممتازًا لتعلم البرمجة باستخدام MPI.أمثلة التعليمات البرمجية موجودة في لغة C، ويتم عرض معظم واجهات برمجة تطبيقات MPI في أحد الأمثلة.أوصي بشدة أن تعمل من خلال هذا الكتاب لتتعرف على ما هي البرمجة المتوازية وما هي ليست كذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top