2010-11-06 7 views
7

शुभ दिन!Boost.MPI बनाम Boost.Asio

इन पुस्तकालयों के बीच क्या अंतर है?

मैं एमपीआई के दस्तावेज़ पढ़ता हूं और एएसओ के साथ छोटा अनुभव करता हूं। मेरे लिए यह नेटवर्क संचार के कार्यान्वयन अलग है और नहीं।

लेकिन उनमें से प्रत्येक अलग-अलग अवशोषण प्रस्तुत करता है (मुझे इन अवशेषों के समान स्तर के बारे में निश्चित नहीं है) जो विभिन्न अनुप्रयोग डिज़ाइन की ओर जाता है।

जब मुझे एक पुस्तकालय या किसी अन्य का उपयोग करना चाहिए? प्रत्येक अलग स्थिति में सही निर्णय चुनने के लिए मुझे क्या जानना चाहिए?

हां, असियो कई नोड्स (और सामान्य रूप से बहुत सामान्य ढांचे) के लिए अच्छा है, लेकिन ऐसे कार्यों के लिए एमपीआई कम क्यों बेहतर है? मुझे नहीं लगता कि एमपीआई सी पुस्तकालय पर निर्भरता प्रतिबंधित है या एमपीआई को समझना मुश्किल है और स्केलेबिलिटी के बारे में क्या है? Asio के साथ हम प्रसारण और दूसरों की तरह चीजों को लागू कर सकते हैं और दूसरी तरफ एमपीआई सरल नेटवर्क अनुप्रयोगों को लिखने से मना नहीं करता है। यदि आवश्यक हो तो एमपीआई के साथ एशिया-विशिष्ट तर्क को फिर से लिखना अवधारणात्मक रूप से मुश्किल है?

सॉकेट की तरह संचार के बारे में क्या: यदि यह अनिवार्य है, तो हम एएसओ या किसी अन्य ढांचे पर मॉड्यूल में ऐसे एक को समाहित कर सकते हैं और फिर भी अन्य संचार के लिए एमपीआई का उपयोग कर सकते हैं।

मेरे लिए सॉकेट और एमपीआई स्टैंडअर्ट अलग-अलग नेटवर्क सेवाएं हैं और यह स्पष्ट नहीं है कि असली दुनिया में मौलिक क्या है, जहां सरल क्लाइंट-सर्वर जोड़ी से कुछ मध्यम गणनाओं की दूरी एक कदम है। इसके अलावा मुझे नहीं लगता कि एमपीआई के पास असियो की तुलना में उल्लेखनीय ओवरहेड है।

शायद यह बुरा सवाल है और हमें इसकी आवश्यकता आईसीई (इंटरनेट संचार इंजन) जैसी कुछ है? विभिन्न भाषाओं का समर्थन और फिर (जैसा कि ज़ीरोक का आश्वासन देता है) महान प्रदर्शन।

और, ज़ाहिर है, मैंने कभी भी इस दस्तावेज़ीकरण विषय में नहीं देखा है जैसे 'इस पुस्तकालय का उपयोग न करें!'।

मैं बस इस तरह की विसंगति नहीं ले सकता: एक मामले में यह सॉकेट, दूसरे में - असीमित संदेश और अंततः भारी मिडलवेयर मंच है। विकास के जीवन चक्र में स्पष्टता कहां है? शायद यह उचित सवाल नहीं है, लेकिन इस चिड़ियाघर को कम करने के लिए हमें कुछ बिंदु चाहिए।

उत्तर

3

मैंने उन दोनों का उपयोग नहीं किया है, लेकिन Boost.ASIO कम स्तर पर नेटवर्किंग के लिए एक अमूर्त परत है, जबकि बूस्ट.एमपीआई एमपीआई मानक लागू करता है जो आपको वितरित कंप्यूटिंग सिस्टम बनाते हैं।

तो अगर आपको कुछ चाहिए, तो सॉकेट की तरह संचार, मैं एएसआईओ के साथ जाऊंगा। यदि आप वितरित कंप्यूटिंग करना चाहते हैं और अन्य भाषाओं में/अन्य प्लेटफार्मों के लिए लिखे गए एमपीआई कार्यक्रमों के साथ भी अंतःक्रिया कर सकते हैं, तो Boost.MPI के साथ जाएं।

5

प्रत्येक पुस्तकालय विभिन्न समस्याओं को हल करता है, वे वास्तव में ओवरलैप नहीं करते हैं। यह भी निर्भर करता है कि आप क्या हल करने की कोशिश कर रहे हैं, और आपके आवेदन के संचार पैटर्न। मापनीयता के लिए Boost.MPI का उपयोग करें, जैसे हजारों के लिए स्केलिंग, या हजारों नोड्स। अंतर्निहित नेटवर्क आर्किटेक्चर के आधार पर, एमपीआई सामूहिक परिचालनों में भी उत्कृष्टता प्राप्त करता है: इकट्ठा, स्कैटर, प्रसारण इत्यादि।

सॉकेट एब्स्ट्रक्शन परत के लिए Boost.Asio का उपयोग करें यदि आपको केवल एक सर्वर और कुछ क्लाइंट जैसे कुछ नोड्स की आवश्यकता है । मैं Boost.Asio का उपयोग करने का सुझाव दूंगा यदि आप पहले से ही कुछ फैशन में एमपीआई वितरण का उपयोग नहीं कर रहे हैं।