سؤال

لا بد لي من تنفيذ نظام MPI في المجموعة.إذا كان لدى أي شخص هنا أي خبرة مع MPI (MPICH/OpenMPI)، أود أن أعرف أيهما أفضل وكيف يمكن تعزيز الأداء على مجموعة من الصناديق x86_64.

هل كانت مفيدة؟

المحلول

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

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

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

نصائح أخرى

لقد كتبت عددًا لا بأس به من التطبيقات المتوازية لكل من مجموعات Windows وLinux، ويمكنني أن أنصحك بأن MPICH2 الآن هو على الأرجح الخيار الأكثر أمانًا.إنها، كما ذكر المجيب الآخر، مكتبة ناضجة جدًا.أيضًا، هناك دعم بث وافر (عبر MPI_Bcast) الآن، وفي الواقع، يحتوي MPICH2 على عدد لا بأس به من الميزات الرائعة مثل مبعثر وجمع.

بالرغم من ذلك، يكتسب OpenMPI بعض التقدم.تتمتع حوسبة Penguin (وهي بائع مجموعة كبيرة، وتحب Linux) في الواقع ببعض المعايير القوية حقًا حيث يتفوق OpenMPI على MPICH2 في ظروف معينة.

فيما يتعلق بتعليقك حول "تعزيز الأداء"، فإن أفضل نصيحة يمكنني تقديمها هي عدم إرسال بيانات أكثر مما هو ضروري مطلقًا إذا كنت مقيدًا بالإدخال/الإخراج، وعدم القيام أبدًا بعمل أكثر من اللازم إذا كنت مقيدًا بوحدة المعالجة المركزية.لقد وقعت في فخ تحسين الجزء الخاطئ من التعليمات البرمجية أكثر من مرة :) أتمنى ألا تتبع خطواتي!

قم بزيارة منتديات MPI - فهي تحتوي على الكثير من الخير معلومات حول إجراءات MPI, ، و ال بيوولف يحتوي الموقع على الكثير من الأسئلة المثيرة للاهتمام التي تمت الإجابة عليها.

من الصعب تحديد كلمة "الأفضل".يمكن الإجابة على "أسرع" من خلال قياسها باستخدام الكود الخاص بك والأجهزة الخاصة بك.ستعتمد أشياء مثل التحسين الجماعي وإلغاء التحميل على أجهزتك الدقيقة، كما أنها متغيرة تمامًا فيما يتعلق بإصدارات مكدس برامج التشغيل، ومن المفترض أن تتمكن Google من العثور على مجموعات العمل لك.

بقدر ما يتعلق الأمر بالتحسين، فإن ذلك يعتمد إلى حد ما على الكود، وإلى حد ما على الأجهزة.

هل رمز الإدخال/الإخراج الخاص بك مرتبط بالتخزين؟في هذه الحالة قد يساعد التحقيق في شيء أفضل من NFS كثيرًا، أو استخدام MPI I/O بدلاً من الإدخال/الإخراج المتوازي الساذج

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

يمكن أن يؤدي الفصل بين حركة مرور الإدخال/الإخراج وMPI إلى إحداث فرق كبير في بعض المجموعات، خاصة مجموعات جيجابت إيثرنت.

لقد استخدمنا mpich ببساطة لأنه بدا الأكثر توفرًا والأفضل توثيقًا، ولم نبذل الكثير من الجهد في اختبار البدائل.لدى MPICH أدوات معقولة للنشر على النوافذ.
كانت مشكلة الأداء الرئيسية التي واجهناها هي أننا كنا بحاجة إلى شحن نفس البيانات الأساسية إلى جميع العقد وأن MPICH لا يدعم (أو لا) البث - لذلك كان نشر البيانات الأولية هو O(n)

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