سؤال

أنا أعمل على المتباعدة الكتلة لبعض معالجة البيانات.شبكة رمز رمز معالجة في مكان ، ولكن نحن تقييم منهجيات مختلفة في نهجنا.الآن, كما يجب أن نكون ، نحن I/O bound على مشكلات الأداء و نحن نحاول تقليل هذا عنق الزجاجة.ومن الواضح أسرع مفاتيح مثل Infiniband سيكون رائع, ولكن لا يمكننا تحمل ترف مجرد رمي ما لدينا والحصول على معدات جديدة.

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

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

المحلول

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

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

نصائح أخرى

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

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

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

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

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

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

MPI الفائدة التي يمكنك القيام الجماعية الاتصالات.القيام البث/تخفيضات في O(log p) /* p هو عدد المعالجات*/ بدلا من O(p) هو ميزة كبيرة.

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

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

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

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

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

كيف هو التطبيق الخاص بك I/O ملزمة ؟ هو أنه لا بد على نقل كتل البيانات إلى العمل العقد ، أو غير ذلك لأنه لا بد من التواصل خلال حساب?

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

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

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

setsockopt(m_socket, IPPROTO_TCP, TCP_NODELAY, ...);

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

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

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

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

ولكن عليك أن تعرف ما تقومون به ، فمن المحتمل أن تكون أكثر عرضه للخطأ.أساسا ستكون محل mpi الخاصة بك مع الرسائل البروتوكول.

عن ارتفاع حجم النفقات العامة منخفضة الأعمال الرسائل قد ترغب في التحقق OAMQ مع العديد من المنتجات.مفتوحة المصدر البديل OpenAMQ من المفترض أن يعمل التداول في جيه بي مورغان ، لذلك ينبغي أن تكون موثوق بها ، أليس كذلك ؟

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