एक और दृश्य, जो @ जेरी पहले से लिखा गया है उससे असंगत नहीं है कि ओपनएमपी साझा-स्मृति समांतरता के लिए है और एमपीआई वितरित-स्मृति समांतरता के लिए है। वितरित सिस्टम पर साझा-स्मृति को अनुकरण करना शायद ही कभी विश्वासयोग्य या सफल होता है, लेकिन साझा-स्मृति प्रणाली पर एमपीआई का उपयोग करने के लिए यह एक बिल्कुल उचित दृष्टिकोण है।
बेशक, सभी (?) मल्टीकोर पीसी और सर्वर इन दिनों साझा-मेमोरी सिस्टम हैं इसलिए ओपनएमपी के लिए निष्पादन मॉडल व्यापक रूप से लागू होता है। एमपीआई क्लस्टर्स पर अपने आप में आती है जिस पर प्रोसेसर नेटवर्क पर एक दूसरे के साथ संवाद करते हैं (जिसे कभी-कभी इंटरकनेक्ट कहा जाता है और अक्सर कार्यालय ईथरनेट की तुलना में उच्च-स्पीक होता है)।
अनुप्रयोगों के संदर्भ में मैं अनुमान लगाता हूं कि समांतर कार्यक्रमों का एक बड़ा हिस्सा ओपनएमपी या एमपीआई के साथ सफलतापूर्वक कार्यान्वित किया जा सकता है और दोनों के बीच आपकी पसंद संभवतः हार्डवेयर की उपलब्धता से प्रेरित होती है। हम में से अधिकांश (समांतर-आइसेट) ओपीएमपी को एमपीआई की तुलना में आसान मानेंगे, और यह निश्चित रूप से (मैं जोर देता हूं) एमपीआई के मुकाबले ओपनएमपी के साथ मौजूदा कार्यक्रम को समानांतर रूप से समानांतर करना आसान है।
हालांकि, यदि आपको एक बॉक्स में (और कितने प्रोसेसर जो तेजी से बढ़ रहे हैं) से अधिक प्रोसेसर का उपयोग करने की आवश्यकता है तो एमपीआई आपकी बेहतर पसंद है। आप हाइब्रिड प्रोग्रामिंग के विचार में भी ठोकर खा सकते हैं - उदाहरण के लिए यदि आपके पास मल्टीकोर पीसी का समूह है तो आप पीसी के बीच एमपीआई और ओपनएमपी के बीच एमपीआई का उपयोग कर सकते हैं। मैंने कोई सबूत नहीं देखा है कि प्रोग्रामिंग की अतिरिक्त जटिलता को बेहतर प्रदर्शन से पुरस्कृत किया जाता है, और मैंने कुछ सबूत देखे हैं कि यह निश्चित रूप से प्रयास के लायक नहीं है।
और, जैसा कि टिप्पणियों में से एक ने पहले से ही कहा है, मुझे लगता है कि फोरट्रान समांतर, उच्च प्रदर्शन, वैज्ञानिक और इंजीनियरिंग अनुप्रयोगों के डोमेन में भविष्य के सबूत हैं। मानक के नवीनतम (2008) संस्करण में भाषा में सीधे सह-सरणी (यानी सरणी जो स्वयं को स्मृति प्रणाली में गैर-स्थानीय और स्थानीय पहुंच के साथ वितरित की जाती हैं) शामिल करती हैं। इस सुविधा के एक या दो प्रारंभिक कार्यान्वयन भी हैं। मेरे पास अभी तक उनका कोई अनुभव नहीं है और उम्मीद है कि कुछ सालों के लिए कुछ समस्याएं होंगी।
संपादित ओपी की टिप्पणियों में अंकों की संख्या पर लेने के लिए ...
नहीं, मैं नहीं लगता है कि यह एक बुरा विचार OpenMP के माध्यम से समानांतर कंप्यूटिंग दृष्टिकोण है है। मुझे लगता है कि ओपनएमपी और एमपीआई (या, अधिक सटीक रूप से, समानांतर कंप्यूटिंग के मॉडल जो वे लागू करते हैं) पूरक हैं। मैं निश्चित रूप से दोनों का उपयोग करता हूं, और मुझे संदेह है कि अधिकांश पेशेवर समांतर प्रोग्रामर भी करते हैं। लगभग 2 साल पहले विश्वविद्यालय छोड़ने के बाद से मैंने ओपनएमपी नहीं किया था जब मल्टीकोर वास्तव में हर जगह पॉप-अप करना शुरू कर दिया था। अब मैं शायद दोनों की बराबर मात्रा के बारे में करता हूं।
अपने आगे (स्वयं) शिक्षा के संदर्भ में मुझे लगता है कि किताब फेरीवाला द्वारा OpenMP का उपयोग एट अल चंद्रा द्वारा एक से बेहतर है, अगर केवल क्योंकि यह बहुत अधिक अप टू डेट है। मुझे लगता है कि चंद्र पुस्तक ओपनएमपी 2 की पूर्व-तारीखें हैं, और चैपलैन पुस्तक प्री-डेट ओपनएमपी 3 जो सीखने लायक है।
एमपीआई तरफ Gropp द्वारा पुस्तकों एट अल, एमपीआई और का उपयोग का उपयोग करना एमपीआई -2 अपरिहार्य हैं; ऐसा शायद इसलिए है क्योंकि वे (जहां तक मैंने पाया है) एमपी 3 के लिए एकमात्र ट्यूटोरियल परिचय उनके उत्कृष्टता के कारण है। मुझे नहीं लगता कि वे बुरे हैं, आपको दिमाग है लेकिन उनके पास बहुत प्रतिस्पर्धा नहीं है। मुझे सी ++ और एमपीआई में समानांतर वैज्ञानिक कंप्यूटिंग करना और कर्णबीकिस और किर्बी द्वारा भी पसंद है; वैज्ञानिक कंप्यूटिंग ज्ञान के अपने स्तर के आधार पर हालांकि आप अधिकतर सामग्री को मूलभूत पाते हैं।
लेकिन मुझे लगता है कि क्षेत्र में पूरी तरह से कमी है (उम्मीद है कि कोई मुझे यहां गलत साबित कर सकता है?) समानांतर निष्पादन के लिए कार्यक्रमों के डिजाइन पर एक अच्छी पाठ्यपुस्तक (या पाठ्यपुस्तकों की मुट्ठी भर) है, अनुभवी फोरट्रान की मदद करने के लिए कुछ मामला) प्रोग्रामर सीरियल से समानांतर प्रोग्राम डिज़ाइन तक कूदता है। लूप या लूप के घोंसले को समानांतर करने के तरीके के बारे में बहुत सारी जानकारी, संरचित सकारात्मक अर्ध-निश्चित मैट्रिस (या जो कुछ भी) पर समांतर कंप्यूटेशंस के विकल्पों पर इतना अधिक नहीं है। उस स्तर की जानकारी के लिए हमें शोध पत्रों में काफी मुश्किल से खुदाई करना है (एसीएम और आईईईई डिजिटल पुस्तकालय मामूली वार्षिक लागत के लायक हैं - यदि आप एक अकादमिक संस्थान में हैं तो आपकी लाइब्रेरी में इनके लिए सब्सक्रिप्शन हो सकता है और बहुत कुछ, मैं मैं भाग्यशाली हूं कि मेरे नियोक्ता मेरे पेशेवर समाज की सदस्यता और ऐड-ऑन के लिए भुगतान करते हैं, लेकिन अगर उन्होंने नहीं किया तो मैं खुद का भुगतान करूंगा)।
24 प्रोसेसर (सीपीयू? या कोर?, वास्तव में कोई फर्क नहीं पड़ता, बस पूछता है) के साथ एक नई प्रयोगशाला के लिए आपकी योजनाओं के अनुसार, आपके द्वारा लिया गया मार्ग आपकी जेब की गहराई पर निर्भर होना चाहिए।यदि आप इसे बर्दाश्त कर सकते हैं तो मैं सुझाव दूंगा:
- एक साझा-स्मृति कंप्यूटर पर विचार करें, निश्चित रूप से एक साल पहले सूर्य, एसजीआई और आईबीएम सभी इस तरह के कोर के साथ साझा-मेमोरी सिस्टम की आपूर्ति कर सकते हैं, मैं बाजार की वर्तमान स्थिति के बारे में निश्चित नहीं हूं लेकिन चूंकि आपके पास यह तय करने के लिए फरवरी तक है कि यह देखने लायक है। एक साझा-मेमोरी सिस्टम आपको साझा-स्मृति समांतरता विकल्प देता है, जो क्लस्टर नहीं करता है, और साझा-मेमोरी प्लेटफ़ॉर्म पर संदेश-पासिंग को हल्की गति से चलाना चाहिए। (वैसे, यदि आप इस मार्ग पर जाते हैं, तो सिस्टम के इस पहलू को बेंचमार्क करें, साझा-मेमोरी कंप्यूटर पर कुछ खराब एमपीआई कार्यान्वयन हुए हैं।) साझा किए गए मेमोरी कंप्यूटर पर एक अच्छा एमपीआई कार्यान्वयन (इसका मेरा अंतिम अनुभव चालू था एक 512 प्रोसेसर एसजीआई Altix) कोई संदेश नहीं भेजता है, यह बस कुछ बिंदुओं को चारों ओर ले जाता है और इसके परिणामस्वरूप, तेजी से तेजी से। Altix के साथ समस्या यह थी कि 128 प्रोसेसर से परे स्मृति बस सभी यातायात से अभिभूत होने के लिए प्रतिबद्ध था; वह समय क्लस्टर या एमपीपी बॉक्स पर एमपीआई में स्विच करने का समय था।
- फिर से, यदि आप इसे बर्दाश्त कर सकते हैं, तो मैं आपको सिस्टम इंटीग्रेटर को एक कार्य प्रणाली प्रदान करने की सलाह दूंगा, और क्लस्टर (या जो कुछ भी) खुद को बनाने से बचें। यदि, मेरे जैसे, आप पहले प्रोग्रामर हैं और एक अनिच्छुक सिस्टम इंटीग्रेटर रास्ता दूसरा है, यह एक आसान तरीका है और आपको एक कार्य प्रणाली प्रदान करेगा जिस पर आप प्रोग्रामिंग शुरू कर सकते हैं।
यदि आप महंगी विकल्प बर्दाश्त नहीं कर सकते हैं, तो मैं प्रति बॉक्स 4 या 8 कोर के साथ कई रैक-माउंटेड सर्वरों के लिए जाऊंगा (पसंद मूल्य निर्भर है, और यहां तक कि 16 कोर प्रति बॉक्स भी आज के लायक है) और, आज, मैं प्रति कोर कम से कम 4 जीबी रैम की योजना बना रहा हूं। फिर आपको सबसे तेज़ इंटरकनेक्ट की आवश्यकता हो सकती है; जीबी ईथरनेट ठीक है, लेकिन इन्फिनिबैंड (या दूसरा जिसका नाम मैं भूल जाता हूं) बेहतर है, हालांकि कीमत में कूद ध्यान देने योग्य है। और आपको अपने नए क्लस्टर के लिए हेड नोड के रूप में कार्य करने, नौकरी प्रबंधन प्रणाली और अन्य सामान चलाने के लिए एक पीसी की आवश्यकता होगी। इंटरनेट पर उत्कृष्ट सामग्री का एक टन है जो बिल्डिंग और क्लस्टर पर चल रहा है, अक्सर बियोवुल्फ़ के शीर्षक के तहत, जो कि 'होम-ब्रू' क्लस्टर माना जाता है, का नाम था।
अब, चूंकि आपके पास अपनी प्रयोगशाला को चलाने और चलाने के लिए फरवरी तक है, अपने सहयोगियों की आग 2 और अपने पीसी को मिनी-बियोवुल्फ़ में बदल दें। एक संभावित दिखने वाली एमपीआई स्थापना को डाउनलोड और इंस्टॉल करें (ओपनएमपीआई अच्छा है लेकिन अन्य लोग विचार करने के लिए हैं और आपके ओ/एस एक और विकल्प को निर्देशित कर सकते हैं)। अब जब आप प्रयोगशाला तैयार हों तो तैयार हो सकते हैं।
पीएस यदि आप 2 पीसी को किसी अन्य तरीके से स्कैन कर सकते हैं तो आपको 2 लोगों को आग लगाना नहीं है। और पीसी डेस्कटॉप उपयोग के लिए पुराने और अपर्याप्त हो सकते हैं, वे सिर्फ आपके और आपके सहयोगियों के लिए एक प्रशिक्षण मंच बनने जा रहे हैं (यदि आपके पास कोई बाएं है)। जितना अधिक समान वे बेहतर होते हैं।
फोरट्रान मेरे लिए "भविष्य-सबूत" नहीं सुनता है ... – Andrey
लोग कह रहे हैं कि 80 के दशक से। अभी भी यहीं। वैज्ञानिक प्रोग्रामिंग और संख्यात्मक तरीकों के लिए अभी भी महत्वपूर्ण है। – duffymo