لماذا MPI تعتبر أصعب من الذاكرة المشتركة و إرلانج تعتبر أسهل عندما تكون كل رسالة-المرور ؟

StackOverflow https://stackoverflow.com/questions/185444

سؤال

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

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

لا أحد يعرف لماذا هناك مثل هذا الفارق في النظرة رسالة عابرة مقابلالذاكرة المشتركة في ذلك HPC العالمين ؟ هل هو بسبب بعض الفرق الأساسي في كيفية إرلانج و MPI تنفيذ تمرير الرسائل التي تجعل إرلانج-أسلوب الرسالة-يمر أسهل بكثير من MPI ؟ أم أن هناك سبب آخر ؟

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

المحلول

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

ويستند إرلانج على مفهوم الذاكرة المحلية، رسالة غير متزامن عابرة، والدولة المشتركة حلها باستخدام بعض شكل قاعدة بيانات عالمية لجميع المواضيع يمكن الوصول إليها. وهي مصممة للتطبيقات التي لا تتحرك مجموعة كبيرة من البيانات حولها، والتي ليس من المفترض أن تنفجر خارج ل100K العقد منفصلة التي تحتاج إلى تنسيق.

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

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

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

نصائح أخرى

والتوازي في إرلانج <م> لا تزال من الصعب جدا تنفيذها. أعني أن لا يزال لديك لمعرفة كيفية تقسيم مشكلتك، ولكن هناك عدد قليل من الأشياء البسيطة التي تخفف هذه الصعوبة بالمقارنة مع بعض المكتبات MPI في C أو C ++.

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

وبالإضافة إلى ذلك، يتم بناؤها المكتبات إرلانج في جميع أنحاء رسالة إرلانج لتمرير. هذا الهيكل الدعم يساعد تعطيك دفعة إلى أرض processling موازية. نلقي نظرة على مكونات من مكتب المدعي العام ترغب gen_server، gen_fsm، gen_event. هذه هي سهلة جدا للاستخدام الهياكل التي يمكن أن تساعد البرنامج بالتوازي تصبح.

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

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

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

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

وأعتقد أنه له علاقة عقلية عندما كنت البرمجة مع MPI و عندما كنت البرمجة مع إرلانج.على سبيل المثال, MPI ليس المدمج في اللغة بينما إرلانج وقد بنيت في دعم رسالة عابرة.سبب آخر محتمل هو افصل بين مجرد إرسال/استقبال الرسائل و تقسيم الحلول إلى المتزامنة وحدات التنفيذ.

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

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

المناقشة يمكن أن تستمر ولكن الرأي الشائع هو أنه إذا كان بناء على رسالة ويمر هو في الواقع بنيت في لغة البرمجة و النموذج الذي تستخدمه عادة هذا هو أفضل وسيلة للتعبير عن الحل بالمقارنة مع شيء آخر هو أن "علق" أو موجود باعتبارها إضافة إلى اللغة (في شكل مكتبة أو التمديد).

<اقتباس فقرة>   

لا أحد يعرف لماذا لا يوجد مثل هذا الاختلاف في النظرة مقابل الذاكرة المشتركة في مجال تقنية المعلومات والحوسبة عالية الأداء في العالم يمر رسالة؟ هل يرجع ذلك إلى بعض الفرق الأساسي في كيفية إرلانج وMPI تنفيذ عابرة رسالة التي تجعل من الطراز إرلانج رسالة تمرير أسهل بكثير من MPI؟ أم أن هناك سبب آخر؟

والسبب هو ببساطة التوازي مقابل التزامن. ولدت إرلانج للبرمجة المتزامنة. HPC هو كل شيء عن البرمجة المتوازية. ترتبط هذه ولكن أهداف مختلفة.

ومعقد البرمجة المتزامنة كثيرا من التحكم في التدفق بشكل كبير غير القطعية والكمون وغالبا ما يكون هدفا هاما. استخدام إرلانج من هياكل البيانات الثابتة يبسط إلى حد كبير البرمجة المتزامنة.

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

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

وفيما يتعلق MPI مقابل قانون الزواج / UPC: القوات MPI لك شريحة المشكلة في قطع صغيرة وتحمل المسؤولية لنقل البيانات حولها. مع قانون الزواج / UPC، "جميع البيانات هناك"، عليك أن dereference مؤشر. ميزة MPI هي أن 32-512 مجموعات CPU هي أرخص بكثير من آلات 32-512 وحدة المعالجة المركزية واحدة. أيضا، مع MPI حساب هو مقدما، عند تصميم الخوارزمية. قانون الزواج / UPC يمكن إخفاء الإختفاء التي ستحصل في وقت التشغيل، إذا كان النظام يستخدم NUMA (وجميع أنظمة كبيرة تفعل) - إن البرنامج يتم تحجيم وسوف يستغرق بعض الوقت لمعرفة لماذا

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

إرلانج مقابل MPI - النتائج النهائية ورمز المصدر

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