चलनी सी++ समानांतर प्रोग्रामिंग प्रणाली

From alpha
Jump to navigation Jump to search

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

परिचय

छलनी एक C++ कंपाइलर है जो सीरियल कोड का एक भाग लेगा, जिसे छलनी मार्करों के साथ एनोटेट किया जाएगा, और इसे स्वचालित रूप से समानांतर किया जाएगा। प्रोग्रामर उस कोड को लपेटता है जिसे वे एक शाब्दिक दायरे के अंदर समानांतर करना चाहते हैं, जिसे 'छलनी' के रूप में टैग किया गया है। इस दायरे के अंदर, जिसे आमतौर पर 'छलनी ब्लॉक' के रूप में जाना जाता है, कुछ नियम लागू होते हैं पीडीएफ:

  • सभी दुष्प्रभाव (कंप्यूटर विज्ञान) | छलनी ब्लॉक के भीतर दुष्प्रभाव दायरे के अंत तक विलंबित होते हैं।
  • साइड-इफेक्ट्स को छलनी ब्लॉक दायरे के बाहर घोषित डेटा में किसी भी संशोधन के रूप में परिभाषित किया गया है।
  • केवल छलनी या तत्काल से एनोटेट किए गए फ़ंक्शन को ही कॉल किया जा सकता है।

साइड-इफेक्ट्स में देरी करने से कई छोटी निर्भरताएँ दूर हो जाती हैं जो आमतौर पर स्वचालित समानांतरीकरण में बाधा डालती हैं। प्रत्यक्ष मेमोरी एक्सेस (डीएमए) जैसे विभिन्न डेटा मूवमेंट तंत्रों के बेहतर उपयोग की अनुमति देने के लिए कंपाइलर द्वारा पढ़ने और लिखने को सुरक्षित रूप से पुन: व्यवस्थित किया जा सकता है। इसके अलावा, उपनाम विश्लेषण और डेटाफ्लो विश्लेषण को सरल बनाया जा सकता है [1]। कंपाइलर समानता का फायदा उठाने के लिए छलनी ब्लॉक के भीतर कोड को बहुत आसानी से विभाजित कर सकता है।

मेमोरी कॉन्फ़िगरेशन

स्कोप के इस पृथक्करण का अर्थ यह भी है कि छलनी प्रणाली का उपयोग गैर-समान मेमोरी आर्किटेक्चर में किया जा सकता है। मल्टी-कोर सीपीयू जैसे कि PlayStation 3 में प्रयुक्त सेल माइक्रोप्रोसेसर इस प्रकार के होते हैं, जिसमें तेज़ कोर में स्थानीय यादें होती हैं जिनका उपयोग सिस्टम में निहित प्रदर्शन का फायदा उठाने के लिए किया जाना चाहिए। यह x86 जैसे साझा मेमोरी सिस्टम पर भी काम करने में सक्षम है, जिसका अर्थ है कि यह विभिन्न आर्किटेक्चर पर चल सकता है। विभिन्न यादों और प्रसंस्करण तत्वों के पदानुक्रम वाले सिस्टम के लिए छलनी ब्लॉकों को [2] भी नेस्ट किया जा सकता है।

समानांतरीकरण और मापनीयता

छलनी संकलक एक छलनी ब्लॉक के भीतर कोड को 'स्प्लिथेर' कथन के माध्यम से या तो परोक्ष या स्पष्ट रूप से टुकड़ों में विभाजित कर सकता है। उदाहरण के लिए, निम्न उदाहरण एक लूप को समानांतर बनाते हुए दिखाता है:

 sieve
 {
    for (iterator i(0); i<length; ++i)
    {
       R[i] = A[i] * B[i]   
       splithere;
    }
 }

कंपाइलर एक प्रवेश बिंदु के रूप में, लूप निर्माण बॉडी के ऊपर स्पष्ट रूप से एक स्प्लिटपॉइंट जोड़ देगा। इसी प्रकार एक को निकास बिंदु के रूप में बाद में जोड़ा जाएगा।

छलनी प्रणाली में, छलनी ब्लॉक दायरे में केवल स्थानीय चर पर निर्भरता हो सकती है। हालाँकि, इन निर्भरताओं को विभाजन बिंदुओं को पार नहीं करना चाहिए; वे संकलक चेतावनियाँ उत्पन्न करेंगे[citation needed]. इस लूप को समानांतर करने के लिए, मानक पूर्णांक लूपिंग काउंटर के स्थान पर एक विशेष 'इटरेटर' वर्ग का उपयोग किया जा सकता है। यह समानांतरीकरण के लिए सुरक्षित है, और प्रोग्रामर अपनी इच्छानुसार नई इटरेटर कक्षाएं बनाने के लिए स्वतंत्र है .html। इन इटरेटर कक्षाओं के अलावा, प्रोग्रामर 'एक्युमुलेटर' नामक कक्षाओं को लागू करने के लिए स्वतंत्र है, जिनका उपयोग कटौती कार्यों को करने के लिए किया जाता है।

जिस तरह से Iterator कक्षाओं को लागू किया जाता है वह स्केलेबिलिटी के लिए विभिन्न साधन खोलता है। लक्ष्य प्लेटफ़ॉर्म पर निष्पादित करते समय सीव पैरेलल रनटाइम गतिशील सट्टा निष्पादन को नियोजित करता है। इससे बहुत अच्छे स्पीडअप मिल सकते हैं, हालाँकि सिंगल कोर मशीन पर चलने पर ओवरहेड्स लग सकते हैं [3]

नियतिवाद

नियतिवाद चलनी प्रणाली की एक असामान्य विशेषता है। यदि मल्टी कोर मशीन पर समानांतर चलनी प्रोग्राम निष्पादित करने से बग उत्पन्न होता है, तो डिबगिंग में सहायता के लिए एकल कोर पर चलाने पर बग गायब नहीं होगाCodeplay.com/downloads_public/sievepaper-2columns-normal.pdf[4]। इससे दौड़ की स्थिति को खत्म करने का लाभ मिलता है, जो समवर्ती प्रोग्रामिंग में सबसे आम बगों में से एक है। छलनी ब्लॉक के भीतर समवर्ती नियंत्रण संरचनाओं पर विचार करने की आवश्यकता को हटाने से विकास के समय में तेजी आ सकती है और परिणामस्वरूप सुरक्षित कोड प्राप्त हो सकता है।

समर्थित सिस्टम

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

छलनी को मल्टी-कोर x86 सिस्टम, एजिया फिजिक्स भौतिकी प्रसंस्करण इकाई पर सफलतापूर्वक काम करते हुए दिखाया गया है [5] , और आईबीएम सेल माइक्रोप्रोसेसर। यदि किसी निश्चित लक्ष्य प्लेटफ़ॉर्म के लिए कंपाइलर कोड जनरेशन (कंपाइलर) उपलब्ध नहीं है तो एएनएसआई सी उत्पन्न होता है। यह मौजूदा सी संकलन टूलकिट [6] का उपयोग करके ऑटोपैरेललाइज़ेशन की अनुमति देता है।[permanent dead link].

यह भी देखें

संदर्भ


बाहरी संबंध