वैज्ञानिक कम्प्यूटिंग में टास्क-आधारित साझा-मेमोरी समानांतर लाइब्रेरी


10

हाल के वर्षों में, कई पुस्तकालय / सॉफ्टवेयर परियोजनाएं सामने आई हैं जो सामान्य रूप से डेटा-संचालित साझा-मेमोरी समानता के कुछ रूप या अन्य प्रदान करती हैं।

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

ऐसे पुस्तकालयों के उदाहरण हैं:

  • प्रश्न : मूल रूप से एमएजीएमए समानांतर रैखिक बीजगणित पुस्तकालय के लिए डिज़ाइन किया गया है , लगता है कि इसका उपयोग समानांतर फास्ट मल्टीपोल विधि के लिए भी किया गया है।

  • Cilk : मूल रूप से एक MIT- आधारित परियोजना है, जिसे अब Intel द्वारा समर्थित किया गया है, C को भाषा / संकलक एक्सटेंशन के रूप में कार्यान्वित किया गया है, जिसका उपयोग Cilkchess कंप्यूटर शतरंज सॉफ्टवेयर में किया जाता है और प्रयोगात्मक रूप से FFTW में किया जाता है

  • एसएमपी सुपरसालकर : बार्सिलोना सुपरकंप्यूटिंग सेंटर में विकसित किया गया, #pragmaएक्सटेंशन के आधार पर कई मायनों में सिलक के समान है ।

  • StarPU : समान लाइब्रेरी आधारित "कोडलेट्स" जिसे GPU सहित कई अलग-अलग आर्किटेक्चर पर संकलित और निर्धारित किया जा सकता है।

  • ओपनएमपी कार्य: संस्करण 3.0 के अनुसार, ओपनएमपी ने "कार्य" पेश किया जो कि अतुल्यकालिक रूप से निर्धारित किया जा सकता है (विनिर्देश की धारा 2.7 देखें)।

  • इंटेल के थ्रेडिंग बिल्डिंग ब्लॉक्स : अतुल्यकालिक कार्यों को बनाने और लॉन्च करने के लिए C ++ कक्षाओं का उपयोग करता है, ट्यूटोरियल की धारा 11 देखें।

  • ओपनसीएल : मल्टी-कोर पर कार्य-आधारित समानता का समर्थन करता है।

हालांकि इन पुस्तकालयों / भाषा एक्सटेंशनों के आंतरिक कामकाज और विशिष्ट समस्याओं के लिए उनके आवेदन का वर्णन करने वाले बहुत सारे साहित्य हैं, मैं केवल उन बहुत कम उदाहरणों में आया हूं जो वैज्ञानिक कंप्यूटिंग अनुप्रयोगों में व्यवहार में उपयोग किए जा रहे हैं।

तो यहाँ सवाल यह है कि क्या कोई भी इन लाइब्रेरियों / भाषा एक्सटेंशनों, या समान, साझा-मेमोरी समानता के लिए किसी वैज्ञानिक कंप्यूटिंग कोड का उपयोग करता है?


क्या आप कार्य-आधारित समानता की तलाश कर रहे हैं? क्या कोई कारण है कि आपने OpenCL और Intel TBB को छोड़ दिया है? मुझे स्वीकार करना होगा कि मैं ठीक-ठीक नहीं बता सकता कि आप यहाँ क्या देख रहे हैं।
एरन अहमदिया

1
@AronAhmadia: अज्ञानता, मुख्य रूप से ... :) मैंने सूची में TBB और OpenCL जोड़ा है, लेकिन सवाल अभी भी वही है: क्या ये, अर्थात उनके कार्य-आधारित घटक, वैज्ञानिक के लिए किसी भी महत्वपूर्ण सॉफ़्टवेयर के उपयोग में लाए गए हैं कंप्यूटिंग?
पेड्रो

हम इस सवाल और इसके जवाबों को समुदाय-विकी में बदल देने के बारे में कैसा महसूस करते हैं?
एरन अहमदिया

@ एरोनहैमिया: मैं थोड़ा चिंतित हूं कि अगर मैं प्रश्न प्रारूप छोड़ता हूं, तो यह कार्य-आधारित और / या साझा-मेमोरी प्रोग्रामिंग के फायदे / नुकसान पर सामान्य रूप से चर्चा करने पर जल्दी से लंबी चर्चा में बदल जाएगा। हालाँकि, इसके कुछ और जवाब मिलने के बाद मैं इसे बंद करने के पक्ष में हूँ।
पेड्रो

शीर्षक उचित नहीं है। यह प्रश्न कार्य समानता के बारे में है, साझा की गई स्मृति के बारे में नहीं।
जेफ

जवाबों:


8

Deal.II पूरे पुस्तकालय में थ्रेडिंग बिल्डिंग ब्लॉक्स का उपयोग करता है और बड़े और हम इससे काफी खुश हैं। हमने कुछ विकल्पों पर गौर किया है, विशेष रूप से ओपनएमपी में क्योंकि सभी को लगता है कि सरल कोड के लिए इसका उपयोग किया जा रहा है, लेकिन उनमें कमी पाई गई। विशेष रूप से, ओपनएमपी का भारी नुकसान है कि इसका कार्य मॉडल आपको आपके द्वारा शुरू किए गए कार्य के लिए एक हैंडल प्राप्त करने की अनुमति नहीं देता है, और परिणामस्वरूप कार्य की स्थिति तक पहुंचना मुश्किल है (जैसे कि इसे समाप्त करने के लिए इंतजार करना) या मूल्यों को वापस करना एक अलग कार्य पर चलने वाले कार्य। OpenMP मुख्य रूप से अंतरतम छोरों को समानांतर बनाने के लिए अच्छा है, लेकिन आप बाहरी , जटिल छोरों को समानांतर करके समानांतर दक्षता प्राप्त करते हैं , और OpenMP उस के लिए उपकरण नहीं है जबकि TBB इसके लिए यथोचित रूप से अच्छा है।


यह इंगित करने के लिए धन्यवाद, मैंने सौदा नहीं देखा था। क्या कोई प्रकाशन या दस्तावेज का टुकड़ा है जिसमें सौदा किया गया हो। टीबीबी के उपयोग का विस्तार से वर्णन किया गया है?
पेड्रो

कोई प्रकाशन नहीं, लेकिन यह मदद कर सकता है: Dealii.org/developer/doxygen/deal.II/group__threads.html
वोल्फगैंग बैंगर्थ

4

मेरी राय में, मुख्य रूप से निम्नलिखित कारणों से ये प्रणालियां अपेक्षाकृत असफल रही हैं।

  • मेमोरी के स्थानीयता को उजागर करने और तुल्यकालन बिंदुओं को हटाने की तुलना में समानांतर गणना (उदाहरण के लिए फ्लॉप) के समानांतर गणना करने वाले भोले परिप्रेक्ष्य। भले ही कुछ समस्याएं, जैसे कि घने मैट्रिक्स एल्गोरिदम, अभी भी एफपी-सीमित हैं, जो केवल मेमोरी सबसिस्टम के सावधानीपूर्वक विचार के बाद होती है और अधिकांश कम्प्यूटेशनल गुठली (विशेषकर पीडीई दुनिया में) अधिक मेमोरी-संवेदी होती हैं। फ्लॉप और अधिक परमाणु मेमोरी ऑपरेशंस (कतार के माध्यम से सिंक्रनाइज़ेशन के कारण) के बेहतर भोले संतुलन के लिए कार्य कतार मेमोरी लोकल का व्यापार करती हैं।
  • मजबूत स्केलेबिलिटी की कीमत पर डायनेमिक लोड बैलेंस के लिए रिलायंस ओवर-डिकम्पोजिशन। टास्क में आम तौर पर अतिव्यापी डेटा निर्भरता (भूत मूल्य) होते हैं। जैसे-जैसे आंतरिक का आकार सिकुड़ता है, भूत / आंतरिक अनुपात बढ़ता जाता है। यहां तक ​​कि जब यह निरर्थक काम नहीं करता है, तो इसका मतलब है कि स्मृति आंदोलन में वृद्धि हुई है। मेमोरी बैंडविड्थ आवश्यकताओं में महत्वपूर्ण कमी सहकारी प्रीफैच जैसे दृष्टिकोणों द्वारा हो सकती है, जिसके द्वारा कई धागे अपने पड़ोसी के लिए सॉफ्टवेयर-प्रीफेटिंग द्वारा एल 1 या एल 2 कैश साझा करते हैं (जो कि स्पष्ट रूप से धागे के समूह को लगभग सुसंगत रखता है)। यह अति-विघटन के बिल्कुल विपरीत है।
  • अप्रत्याशित प्रदर्शन, ज्यादातर स्मृति से संबंधित मुद्दों के कारण।
  • पुस्तकालय के अनुकूल घटकों की कमी। इसे लगभग संक्षेप में प्रस्तुत किया जा सकता है क्योंकि इसका एनालॉग नहीं होने से MPI_Commविभिन्न पुस्तकालयों को बिना टकराए समृद्ध संचालन करने की अनुमति मिलती है, साथ ही पुस्तकालयों के बीच संदर्भ पारित करने और आवश्यक विशेषताओं को पुनर्प्राप्त करने की अनुमति मिलती है। "कम्युनिकेटर" द्वारा प्रदान की गई अमूर्तता पुस्तकालय रचना के लिए महत्वपूर्ण है, भले ही साझा या वितरित स्मृति का उपयोग किया गया हो।

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

सवाल, किसी भी मामले में, एक अलग था ... क्या आप किसी भी वैज्ञानिक कंप्यूटिंग सॉफ्टवेयर परियोजनाओं के बारे में जानते हैं जो इन तरीकों का उपयोग करते हैं?
पेड्रो

1. इन प्रणालियों का उपयोग करने वाले कुछ मुट्ठी भर प्रोजेक्ट हैं, लेकिन मुझे नहीं लगता कि दृष्टिकोण को "सफल" माना जा सकता है। 2. निर्भरताएं अभी भी साझा स्मृति में अतिव्यापी हैं। जिस तरह से tcmalloc या Linux कर्नेल थ्रेड को परमाणु के माध्यम से सिंक्रनाइज़ेशन जैसे बाधाओं से बचने के लिए अधिक स्वतंत्र बनाता है उसे देखें। साझा पता स्थान का अर्थ यह नहीं है कि आपको समान रूप से काम करना चाहिए, हालांकि आपके पास एक समान स्मृति थी या जिसे आपको एटमिक्स को सस्ती होना चाहिए।
जेड ब्राउन

3. मैं नहीं जानता कि आप किस "निष्पक्ष तुलना" का हवाला देते हैं, लेकिन PLASMA को केवल लगभग 25% पीकयू मिलता है (उदाहरण के लिए स्लाइड 5 का hpcgarage.org/cscads2012/Luszczek-UTK.powerTools.pdf ) जो होगा वितरित स्मृति में एक ही ऑपरेशन के लिए upllishably खराब जहां कम से कम 70% चोटी की उम्मीद होगी। घने रेखीय बीजगणित एक FPU- बाउंड केस है जिसे मैंने विशेष रूप से एक संभावित अपवाद के रूप में उद्धृत किया है, लेकिन विशाल मैट्रिक्स आकारों के बावजूद, PLASMA स्पष्ट रूप से FPU- बाउंड होने से बहुत दूर है।
जेड ब्राउन

पेड्रो, अधिकांश भौतिकी में एक लंबी दूरी का घटक होता है, इसलिए कणों को एक अद्यतन के साथ युग्मित किया जाता है जो ऊपर सतह-से-मिलाप प्रभाव (PPPM, भंवर कण, आदि) के
अधीन है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.