बूस्ट :: उच्च प्रदर्शन वैज्ञानिक अनुप्रयोगों के लिए एमपीआई या सी एमपीआई?


16

MPI के बारे में मुझे सबसे ज्यादा नापसंद है डेटाैटिप्स (यानी डेटा मैप्स / मास्क) के साथ काम करना क्योंकि वे ऑब्जेक्ट ओरिएंटेड सी ++ के साथ अच्छी तरह से फिट नहीं हैं। boost::mpiकेवल MPI 1.1 का समर्थन करता है, हालांकि, उनकी वेबसाइट से:

बढ़ावा देना :: mpi मानक संदेश पासिंग इंटरफ़ेस के लिए C ++ अनुकूल इंटरफ़ेस है ... Boost.MPI Boost.Serialization लाइब्रेरी का उपयोग करके उपयोगकर्ता-परिभाषित प्रकारों के लिए MPI डेटा प्रकार का निर्माण कर सकता है।

क्या किसी को boost::mpiगंभीर वैज्ञानिक कंप्यूटिंग के लिए कोई अनुभव था ? क्या आप इसकी सिफारिश करेंगे? क्या आपके पास कोई समस्या थी (समस्याओं, कंपाइलर समस्याओं, त्रुटियों, कार्यान्वित सुविधाओं को लागू नहीं करना, कुछ एमपीआई 2.2 सुविधाओं की आवश्यकता)?

क्या आप boost::mpiC ++ से MPI C कार्यान्वयन का उपयोग करने के बजाय उपयोग करने पर टिप्पणी कर सकते हैं ? क्या आप दोनों का उपयोग कर सकते हैं (बूस्ट का उपयोग करें: एमपीआई जब आप कर सकते हैं, सी-एमपीआई कहीं और)?

क्या आप किसी बड़े वैज्ञानिक कोड का उपयोग कर के जानते हैं boost::mpi?


इस पृष्ठ बूस्ट को भी देखना चाहिए ।.org/doc/libs/1_50_0/doc/html/mpi /… यह सुनिश्चित करने के लिए कि आपके द्वारा आवश्यक सभी कार्य समर्थित हैं। उन्हें स्वयं लागू करने की संभावना पर भी विचार किया जाना चाहिए।
अलेक्जेंडर

1
सबसे अच्छा कारण मैं बूस्ट :: एमपीआई का उपयोग करने के बारे में सोच सकता हूं, यह स्वचालित रूप से सी ++ प्रकार के क्रमांकन का समर्थन करता है। MPI C इंटरफ़ेस अपने आप ऐसा नहीं कर सकता है और आपको अपने सभी C ++ ऑब्जेक्ट्स के लिए MPI डेटाटाइप्स बनाने होंगे ताकि आप उन्हें Send / Recv इत्यादि के माध्यम से पारित कर सकें, जब तक कि आप किसी अन्य माध्यम से अपना स्वयं का क्रमांकन नहीं करना चाहते।
जेफ

एलिमेंटल (libelemental.org) MPI इंटरफ़ेस ( github.com/elemental/Elemental/blob/master/src/core/imports/… ) एक सुरुचिपूर्ण तरीके से स्वचालित प्रकार का पता लगाता है । हालाँकि, यह कई चीजों को करने का प्रयास नहीं करता है जो Boost :: MPI करता है।
जेफ़

जवाबों:


13

मैंने हमेशा सोचा है कि हमें इसे अपने प्रोजेक्ट, डील.II में उपयोग करना चाहिए, क्योंकि यह शुद्ध एमपीआई की तुलना में उच्च स्तर है और कोड के कुछ लाइनों को यहां और वहां बचा सकता है। उस ने कहा, जो मैंने पिछले कुछ वर्षों में सीखा है कि अधिकांश उच्च-स्तरीय कोड वास्तव में उस एमपीआई कोड के साथ शुरू करने के लिए नहीं है - 600,000 लाइनों के कोड में। I के पास एमपीआई के लिए केवल ~ 50 कॉल हैं। यह निश्चित रूप से PETSc जैसे पैकेज की तुलना में बहुत कम है, लेकिन मुझे लगता है कि यह अभी भी सच है कि अधिकांश कोड में कम MPI कॉल हैं, जो पहले की अपेक्षा में होगा और इसके परिणामस्वरूप, उच्च स्तर पर कुछ का उपयोग करने का लाभ उतना महान नहीं है जितना कि एक पहली नज़र में सोच सकते हैं।

इसके बाद आपके लिए क्या उबाल आता है, इस पर विचार करने के लिए कि ट्रेड-ऑफ क्या है। आपको कितना MPI उपयोग करने की आवश्यकता होगी, और यह कैसे बाहरी पुस्तकालय के निर्माण और लिंक के लिए आवश्यक अतिरिक्त प्रयास की तुलना करता है।


6

जहां तक ​​मुझे पता है, एपीआई के आसपास boost::mpiसिर्फ एक c++आवरण Cहै। जब भी, कुछ कार्यक्षमता लागू नहीं होती है , तो आपको एपीआई का उपयोग boost::mpiऔर स्विच करने में सक्षम होना चाहिए C। दरअसल, उनके वेबपेज से:

Boost.MPI में पतले अमूर्त एक को आसानी से अंतर्निहित C MPI लाइब्रेरी में कॉल के साथ संयोजित करने की अनुमति देता है।

मैंने खुद इसका उपयोग नहीं किया है, और एक प्रमुख पुस्तकालय के बारे में नहीं जानता, जो करता है, लेकिन मुझे उम्मीद है कि यह केवल एक हल्का आवरण होगा और चूंकि Cएपीआई की तुलना में इस तरह के प्रदर्शन के बारे में चिंता नहीं करनी चाहिए ।


2
बूस्ट :: MPI, MPI के सबसेट के आसपास एक आवरण है; जैसा कि मुझे याद है, यह केवल MPI 1.2 का समर्थन करता है, जो कि मेरे संबंध में MPI-2.2 या MPI-3 मानकों से बहुत दूर है।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.