2008-09-27 19 views
22

क्या है मुझे एक क्लस्टर में एमपीआई सिस्टम को कार्यान्वित करना है। अगर किसी को यहां एमपीआई (एमपीआईसी/ओपनएमपीआई) के साथ कोई अनुभव है, तो मैं जानना चाहता हूं कि कौन सा बेहतर है और x86_64 बक्से के क्लस्टर पर प्रदर्शन को कैसे बढ़ाया जा सकता है।सर्वश्रेष्ठ एमपीआई कार्यान्वयन

उत्तर

18

एमपीआईसी बहुत अधिक समय से रहा है। यह बेहद पोर्टेबल है और आपको ऑनलाइन सालों की युक्तियां और चालें मिलेंगी। यह एक सुरक्षित शर्त है और यह शायद अधिक एमपीआई कार्यक्रमों के साथ संगत है।

ओपनएमपीआई नया है। हालांकि यह पोर्टेबल के रूप में काफी नहीं है, यह वास्तव में सबसे आम प्लेटफॉर्म का समर्थन करता है। ज्यादातर लोगों को लगता है कि यह कई मामलों में विशेष रूप से गलती सहनशीलता के लिए बहुत बेहतर है - लेकिन इसका लाभ उठाने के लिए आपको कुछ विशेष विशेषताओं का उपयोग करना पड़ सकता है जो एमपीआई मानक का हिस्सा नहीं हैं।

प्रदर्शन के लिए, यह एप्लिकेशन पर बहुत निर्भर करता है; सामान्य सलाह देना मुश्किल है। आपको उस गणना के प्रकार के बारे में एक विशिष्ट प्रश्न पोस्ट करना चाहिए, जिसे आप चलाना चाहते हैं, नोड्स की संख्या, और हार्डवेयर के प्रकार - जिसमें आप किस प्रकार के नेटवर्क हार्डवेयर का उपयोग कर रहे हैं।

+1

एमपीआईसी 2 की गलती सहनशीलता समर्थन हाल ही में काफी सुधार हुआ है। यदि आप इस समर्थन का उपयोग करने में रुचि रखते हैं, तो आप MPICH2 सूची ([email protected]) को मेल करके इसके बारे में और जान सकते हैं। –

+0

यह पता लगाना संभव है कि MPI का कौन सा संस्करण किसी दिए गए सर्वर का उपयोग कर रहा है? मैं पाइथन बाध्यकारी mpi4py चला रहा हूँ, लेकिन यह जानने की जरूरत है कि अंतर्निहित एमपीआई संस्करण क्या है? – 218

-1

हमने mpich का उपयोग केवल इसलिए किया क्योंकि यह सबसे अधिक उपलब्ध और सर्वोत्तम दस्तावेज प्रतीत होता था, हमने विकल्पों का परीक्षण करने में काफी प्रयास नहीं किए। एमपीआईसी में विंडोज़ पर तैनाती के लिए उचित उपकरण हैं।
हमारे पास मुख्य प्रदर्शन मुद्दा था कि हमें सभी नोड्स पर समान आधार डेटा भेजने की आवश्यकता थी और एमपीआईसी प्रसारण का समर्थन नहीं करता (या नहीं) - इसलिए प्रारंभिक डेटा को तैनात करना ओ (एन)

+4

एमपीआईसी (विकसित ~ 1 99 3) ने कम से कम 1 99 4 से प्रसारण का समर्थन किया है। एमपीआईसी 2 (एमपीआईसी के उत्तराधिकारी के रूप में विकसित 2000) ने विकास प्रक्रिया में बहुत जल्दी प्रसारण किया है। शायद आप 'एमपीआईबीकास्ट' के अलावा कुछ मतलब था? मुझे विश्वास नहीं है कि या तो कार्यान्वयन का स्टॉक संस्करण वर्तमान में "निष्पादन योग्य स्टेजिंग" का समर्थन करता है, जहां प्रोग्राम को निष्पादित करने के लिए 'mpiexec' द्वारा नोड्स में स्थानांतरित किया जाता है। –

+0

मैं भूल जाता हूं कि हम क्यों नहीं जा सकते - शायद टीसीपी या डेटा के आकार पर चल रहे हैं? –

+0

उनमें से कोई भी MPICH में MPI_Bcast समर्थन के अस्तित्व के खिलाफ एक वैध तर्क नहीं है। – Jeff

9

I मैंने विंडोज और लिनक्स क्लस्टर्स दोनों के लिए कुछ समानांतर अनुप्रयोगों को लिखा है, और मैं आपको सलाह दे सकता हूं कि अभी एमपीआईसी 2 शायद सुरक्षित विकल्प है। यह है, जैसा कि अन्य उत्तरदाता उल्लेख करता है, एक बहुत परिपक्व पुस्तकालय। इसके अलावा, पर्याप्त प्रसारण समर्थन (MPI_Bcast के माध्यम से) अब है, और वास्तव में, एमपीआईसी 2 में scatter-and-gather जैसी कुछ वाकई अच्छी सुविधाएं हैं।

ओपनएमपीआई कुछ जमीन हासिल कर रहा है। पेंगुइन कंप्यूटिंग (वे एक बड़े क्लस्टर विक्रेता हैं, और वे लिनक्स की तरह हैं) वास्तव में कुछ वास्तव में मजबूत मानक हैं जहां ओपनएमपीआई कुछ परिस्थितियों में एमपीआईसी 2 हाथों को मारता है।

"प्रदर्शन को बढ़ावा देने" के बारे में आपकी टिप्पणी के बारे में, सलाह देने का सबसे अच्छा टुकड़ा यह है कि यदि आप I/O बाध्य हैं, तो आवश्यकतानुसार अधिक डेटा कभी नहीं भेजें, और यदि आप हैं तो अधिक से अधिक काम न करें सीपीयू बाध्य मैं कोड के गलत टुकड़े को एक से अधिक बार अनुकूलित करने के जाल में गिर गया हूं :) उम्मीद है कि आप मेरे कदमों का पालन नहीं करेंगे!

एमपीआई मंचों की जांच करें - उनके पास बहुत अच्छे info about MPI routines हैं, और Beowulf साइट पर बहुत सारे रोचक प्रश्न हैं।

2

'बेहतर' परिभाषित करना मुश्किल है ... 'तेज़' का उत्तर आपके कोड और आपके हार्डवेयर के साथ बेंचमार्क करके किया जा सकता है। सामूहिक & ऑफलोड ऑप्टिमाइज़ेशन जैसी चीजें आपके सटीक हार्डवेयर पर निर्भर करती हैं और ड्राइवर स्टैक संस्करणों के संबंध में भी काफी परिवर्तनीय होती हैं, Google आपको काम करने वाले संयोजन ढूंढने में सक्षम होना चाहिए।

जहां तक ​​अनुकूलन कार्य करता है, वह कुछ हद तक कोड पर निर्भर करता है, और कुछ हद तक हार्डवेयर पर निर्भर करता है।

क्या आपका कोड I/O भंडारण के लिए बाध्य है? इस मामले में एनएफएस की तुलना में कुछ बेहतर जांच करने में मदद मिल सकती है, या एमपीईआई I/O का उपयोग निष्पक्ष समानांतर I/O

यदि आप नेटवर्क बाध्य हैं, तो संचार इलाके को देखते हुए, और comms/compute ओवरलैप मदद कर सकते हैं।विभिन्न एमपीआई कार्यान्वयनों में से अधिकांश में इंट्रानोड कॉम के लिए नेटवर्क की बजाय स्थानीय साझा स्मृति का उपयोग करने के लिए ट्यूनिंग विकल्प हैं, जो कुछ कोड नेटवर्क लोड को कम कर सकते हैं।

आई/ओ और एमपीआई यातायात का पृथक्करण विशेष रूप से ईथरनेट समूहों के लिए, कुछ समूहों पर एक बड़ा फर्क कर सकते हैं।

संबंधित मुद्दे