पैरेलल कंप्यूटिंग वह कंप्यूटिंग है जिसमें बहुत सारें processors बहुत सारें संचालन को एक ही समय में परफॉर्म करते हैं. समानांतर कंप्यूटिंग में कई प्रोसेसर एक साथ उन्हें सौंपे गए कई कार्य करते हैं। समानांतर प्रणालियों में मेमोरी या तो साझा या वितरित की जा सकती है. समानांतर कंप्यूटिंग कॉन्सेप्ट प्रदान करता है और समय और पैसा बचाता है. दोस्तों इसे अगर हम दुसरें शब्दों में कहें तो, “parallel computing एक ऐसी कंप्यूटिंग है जिसमें दो या दो से अधिक प्रोसेसरों का प्रयोग एक अकेले प्रॉब्लम को solve करने में किया जाता है.” parallel computing में जो कार्य होता है उसे प्रोसेसरों के मध्य divided कर लिया जाता है अर्थात् जो मुख्य operation होती है उसे उप समस्याएं में divided कर लिया जाता है. और प्रत्येक sub problems को ही समय पर पूरा किया जाता है. आमतौर पर जैसा की हम सभी जानते है पहले के समय में serial computing का प्रयोग किया जाता था. परन्तु इसमें बहुत समय लगता था. क्योंकि इस computing में एक समय में केवल एक operation ही प्रोसेस हो पाता था. जिसके कारण दुसरें operation को परफॉर्म होने के लिए इन्तजार करना पड़ता था. उदाहरण के लिए:- माना कि आप Interview देने कंपनी में गये. वहां पर 100 Candidate आये हैं. यहाँ पर हम आपकी जानकारी के लिए यह बता दे की Interview लेने के लिए केवल एक ही interviewer है. और वह एक समय में केवल एक बन्दे का Interview ले रहा है तथा और बन्दे इन्तजार कर रहे हैं. इसमें तो 100वें Candidate का इंटरव्यू होने में शाम हो जायेगी. परन्तु अगर 4 interviewer आये है. और चारों interviewer अलग-अलग Candidate का Interview ले रहे हैं तो 100वें Candidate का Interview भी दिन में तक खत्म हो जाएगा. जिससे समय की बचत होगी।
Contents
Parallel Computing in Hindi
समानांतर कंप्यूटिंग एक प्रकार का कंप्यूटिंग आर्किटेक्चर है जिसमें कई प्रोसेसर एक साथ एप्लिकेशन या कम्प्यूटेशन को निष्पादित या प्रोसेस करते हैं. समानांतर कंप्यूटिंग एक से अधिक प्रोसेसर के बीच वर्कलोड को विभाजित करके बड़ी गणना करने में मदद करता है, जो सभी एक ही समय में गणना के माध्यम से काम करते हैं. अधिकांश सुपर कंप्यूटर समानांतर कंप्यूटिंग सिद्धांतों को संचालित करने के लिए काम करते हैं. समानांतर कंप्यूटिंग को समानांतर प्रसंस्करण के रूप में भी जाना जाता है।
समानांतर प्रसंस्करण आमतौर पर परिचालन वातावरण / परिदृश्यों में कार्यान्वित किया जाता है जिनके लिए बड़े पैमाने पर गणना या प्रसंस्करण शक्ति की आवश्यकता होती है. समानांतर कंप्यूटिंग का प्राथमिक उद्देश्य तेजी से अनुप्रयोग प्रसंस्करण या कार्य संकल्प के लिए उपलब्ध गणना शक्ति को बढ़ाना है. आमतौर पर, समानांतर कंप्यूटिंग अवसंरचना को एक एकल सुविधा के भीतर रखा जाता है जहां एक सर्वर रैक में कई प्रोसेसर स्थापित होते हैं या अलग-अलग सर्वर एक साथ जुड़े होते हैं. एप्लिकेशन सर्वर एक गणना या प्रसंस्करण अनुरोध भेजता है जो छोटे चंक्स या घटकों में वितरित किया जाता है, जिन्हें प्रत्येक प्रोसेसर / सर्वर पर समवर्ती रूप से निष्पादित किया जाता है. समानांतर गणना को बिट-लेवल, इंस्ट्रक्शनल लेवल, डेटा और टास्क समानता के रूप में वर्गीकृत किया जा सकता है।
समानांतर कंप्यूटिंग ”एक साथ कई ऑपरेशन करने के लिए कंप्यूटर सिस्टम की क्षमता के लिए खड़ा है. समानांतर कंप्यूटिंग के पीछे मुख्य चालक तथ्य यह है कि बड़ी समस्याओं को छोटे लोगों को विभाजित किया जा सकता है जो तब समानांतर में हल हो सकते हैं – अर्थात् उपलब्ध कंप्यूटिंग संसाधनों पर समवर्ती रूप से निष्पादित किया जाता है।
प्रति सिलिकॉन अधिक प्रदर्शन निचोड़ने की खोज कंप्यूटिंग की सुबह से चल रही है; 2000 के दशक की शुरुआत में प्रोसेसर में गहरी निष्पादन पाइपलाइनों से, आज के मोबाइल फोन में पाए जाने वाले मल्टीकोर SoCs से, जनरल पर्पस ग्राफिक्स प्रोसेसिंग यूनिट्स जो भविष्य में AI Applications को शक्ति प्रदान करेंगे. समानांतर कंप्यूटिंग प्रदर्शन को बढ़ा सकता है, दीवार-घड़ी निष्पादन समय को कम कर सकता है, प्रदर्शन-प्रति-वाट घटा सकता है और ऊर्जा और संसाधनों को बचा सकता है।
समानांतरवाद को विभिन्न रूपों में प्राप्त किया जा सकता है, प्रत्येक अपने युग की प्रौद्योगिकी सीमाओं से घिरा हुआ है. कंप्यूटर इंजीनियर 1970 के दशक की शुरुआत से सीधे हार्डवेयर पर अधिक से अधिक समानता का उपयोग करने की कोशिश कर रहे हैं. इस दृष्टिकोण ने सॉफ्टवेयर डेवलपर्स के लिए समानता की प्रक्रिया को पारदर्शी बने रहने में मदद की, इस प्रकार उन्हें दशकों तक समान प्रोग्रामिंग प्रतिमानों का पालन करने की अनुमति दी गई, जबकि प्रदर्शन में सुधार हुआ. हालाँकि, सिलिकॉन CMOS तकनीक पर भौतिक सीमाएँ निम्न-स्तरीय हार्डवेयर-आधारित समानता तकनीकों पर निर्भर होने से रोक रही हैं. ट्रांजिस्टर का आकार कम करना चिपमेकर्स के लिए सर्वोच्च प्राथमिकता है; लेकिन नई चुनौतियां उत्पन्न होती हैं क्योंकि CMOS उपकरण नैनोस्केल क्षेत्रों में गहरे तक पहुंच जाते हैं:
पैरेलल कंप्यूटिंग क्या है (What is Parallel Computing in Hindi)
हम चाहते हैं कि चीजें तेजी से हो, यदि हम इसे सप्ताह के अंत तक प्राप्त कर सकते हैं, तो हम वास्तव में इसे कल चाहते हैं. यदि हम इसे कल प्राप्त कर सकते हैं, तो हम आज इसे वास्तव में पसंद करेंगे. आइए इसका सामना करते हैं, हम एक ऐसा समाज हैं जिसे इंतजार करना पसंद नहीं है. यदि आप सहमत नहीं हैं, तो बस अंतिम समय के बारे में सोचें जब आप एक फास्ट फूड रेस्तरां में लाइन में खड़े थे और अपने आदेश के लिए कुछ मिनट से अधिक समय तक इंतजार करना पड़ा था. यह विचार मौसम जैसी अन्य चीजों तक फैला हुआ है. हम नियमित रूप से प्रति घंटा पूर्वानुमान की जांच करते हैं कि यह देखने के लिए कि मौसम हमारे काम से और आने वाले दिनों में कैसा रहेगा. हम उम्मीद करते हैं कि दृश्यों के पीछे एक कंप्यूटर है, जो यह जानकारी प्रदान करता है. लेकिन क्या आप जानते हैं कि एक एकल कंप्यूटर अक्सर कार्य तक नहीं होता है? यहीं से समानांतर कंप्यूटिंग का विचार आता है।
सरल शब्दों में, समानांतर कंप्यूटिंग एक कार्य को छोटे टुकड़ों में तोड़ रही है और उन टुकड़ों को एक ही समय में निष्पादित कर रही है, प्रत्येक अपने स्वयं के प्रोसेसर पर या कंप्यूटर के एक सेट पर जो एक साथ नेटवर्क किए गए हैं. आइए एक साधारण उदाहरण देखें। कहें कि हमारे पास निम्नलिखित समीकरण हैं −
Y = (4 x 5) + (1 x 6) + (5 x 3)
किसी एकल प्रोसेसर पर, Y के लिए एक मान की गणना करने के लिए आवश्यक कदम इस तरह दिख सकते हैं −
Step 1: Y = 20 + (1 x 6) + (5 x 3) Step 2: Y = 20 + 6 + (5 x 3) Step 3: Y = 20 + 6 + 15 Step 4: Y = 41
लेकिन तीन या प्रोसेसर के साथ एक समानांतर कंप्यूटिंग परिदृश्य में, कदम कुछ इस तरह दिखते हैं −
Step 1: Y = 20 + 6 + 15 Step 2: Y = 41
अब, यह एक सरल उदाहरण है, लेकिन विचार स्पष्ट है. कार्य को टुकड़ों में तोड़ दें और उन टुकड़ों को एक साथ निष्पादित करें।
समानांतर कंप्यूटर का उपयोग बड़े कम्प्यूटेशनल रूप से गहन और साथ ही डेटा-गहन Applications, जैसे कि भौतिकी, रसायन विज्ञान, जीव विज्ञान, इंजीनियरिंग, चिकित्सा और अन्य विज्ञानों में बड़े पैमाने पर कम्प्यूटेशन को हल करने के लिए तेजी से किया जा रहा है. इन Applications में से अधिकांश I / O गहन हैं और जबरदस्त I / O आवश्यकताएं [4,3] हैं. इन Applications में से एक बड़ी संख्या में “अनियमित” Applications हैं, जहां डेटा तक पहुंच एक या अधिक स्तर के अप्रत्यक्ष के माध्यम से की जाती है।
समानांतर कंप्यूटर वास्तुकला के मूल तत्व
समानांतर कंप्यूटर वास्तुकला समानांतर कंप्यूटर की एक विस्तृत विविधता में मौजूद है, जिस स्तर पर हार्डवेयर समानांतरता का समर्थन करता है, उसके अनुसार वर्गीकृत किया जाता है. समानांतर कंप्यूटर वास्तुकला और प्रोग्रामिंग तकनीक इन मशीनों को प्रभावी ढंग से उपयोग करने के लिए एक साथ काम करती हैं. समानांतर कंप्यूटर आर्किटेक्चर की कक्षाओं में शामिल हैं −
Multi-core computing − एक मल्टी-कोर प्रोसेसर एक कंप्यूटर प्रोसेसर एकीकृत सर्किट है जिसमें दो या अधिक अलग-अलग प्रसंस्करण कोर होते हैं, जिनमें से प्रत्येक समानांतर में प्रोग्राम निर्देशों को निष्पादित करता है. कोर एक एकल चिप पैकेज में या एक एकल एकीकृत सर्किट मरने पर कई मर जाते हैं, और मल्टीथ्रेडिंग, सुपरस्क्लेर, वेक्टर, या वीएलआईडब्ल्यू जैसे आर्किटेक्चर को लागू कर सकते हैं. मल्टी-कोर आर्किटेक्चर को या तो सजातीय के रूप में वर्गीकृत किया गया है, जिसमें केवल समरूप कोर या विषम शामिल हैं, जिसमें कोर शामिल हैं जो समान नहीं हैं।
Symmetric multiprocessing − मल्टीप्रोसेसर कंप्यूटर हार्डवेयर और सॉफ्टवेयर आर्किटेक्चर जिसमें दो या दो से अधिक स्वतंत्र, सजातीय प्रोसेसर एक एकल ऑपरेटिंग सिस्टम उदाहरण द्वारा नियंत्रित होते हैं जो सभी प्रोसेसर को समान रूप से व्यवहार करता है, और सभी सामान्य संसाधनों और उपकरणों तक पूरी पहुंच के साथ एकल, साझा मुख्य मेमोरी से जुड़ा होता है. प्रत्येक प्रोसेसर में एक निजी कैश मेमोरी होती है, जो ऑन-चिप मेष नेटवर्क का उपयोग करके कनेक्ट हो सकती है, और किसी भी कार्य पर काम कर सकती है, चाहे उस कार्य का डेटा मेमोरी में स्थित हो।
Distributed computing − वितरित सिस्टम घटक विभिन्न नेटवर्क वाले कंप्यूटरों पर स्थित होते हैं जो शुद्ध HTTP, RPC- जैसे कनेक्टर्स और संदेश कतारों के माध्यम से संचार करके अपने कार्यों का समन्वय करते हैं. वितरित प्रणालियों की महत्वपूर्ण विशेषताओं में घटकों की स्वतंत्र विफलता और घटकों की संक्षिप्तता शामिल है. वितरित प्रोग्रामिंग को आमतौर पर क्लाइंट-सर्वर, थ्री-टीयर, एन-टियर या पीयर-टू-पीयर आर्किटेक्चर के रूप में वर्गीकृत किया जाता है. वितरित और समानांतर कंप्यूटिंग में बहुत अधिक ओवरलैप है और कभी-कभी शब्दों का उपयोग परस्पर विनिमय के लिए किया जाता है।
पैरेलल कंप्यूटिंग कैसे काम करता है?
समानांतर कंप्यूटिंग बड़ी समस्याओं को छोटी, स्वतंत्र, अक्सर समान भागों में तोड़ने की प्रक्रिया को संदर्भित करता है जिसे एक साथ कई प्रोसेसर द्वारा निष्पादित किया जा सकता है, जो साझा मेमोरी के माध्यम से संचार करते हैं, जिसके परिणाम समग्र एल्गोरिथम के भाग के रूप में पूरा होने पर संयुक्त होते हैं। समानांतर कंप्यूटिंग का प्राथमिक लक्ष्य तेजी से अनुप्रयोग प्रसंस्करण और समस्या समाधान के लिए उपलब्ध गणना शक्ति को बढ़ाना है।
समानांतर कंप्यूटिंग अवसंरचना को आमतौर पर एकल डेटासेंटर के भीतर रखा जाता है जहां सर्वर रैक में कई प्रोसेसर स्थापित होते हैं; अभिकलन अनुरोध छोटे सर्वरों में अनुप्रयोग सर्वर द्वारा वितरित किए जाते हैं जिन्हें फिर प्रत्येक सर्वर पर एक साथ निष्पादित किया जाता है।
आम तौर पर समानांतर कंप्यूटिंग के चार प्रकार होते हैं, दोनों मालिकाना और खुले स्रोत समानांतर कंप्यूटिंग विक्रेताओं से उपलब्ध होते हैं – बिट-लेवल समानता, इंस्ट्रक्शन-लेवल समानता, कार्य समानता या सुपर-लेवल समानता।
Bit-level parallelism − प्रोसेसर शब्द का आकार बढ़ाता है, जो शब्द की लंबाई से अधिक चर पर एक ऑपरेशन करने के लिए प्रोसेसर को निर्देशों की मात्रा को कम करना चाहिए।
Instruction-level parallelism − हार्डवेयर दृष्टिकोण गतिशील समानता पर काम करता है, जिसमें प्रोसेसर रन-टाइम पर निर्णय लेता है जो समानांतर में निष्पादित करने का निर्देश देता है; सॉफ्टवेयर दृष्टिकोण स्थैतिक समानता पर काम करता है, जिसमें संकलक यह तय करता है कि समानांतर में कौन सा निर्देश निष्पादित करना है।
Task parallelism − कई प्रोसेसरों पर कंप्यूटर कोड के समानांतरकरण का एक रूप जो एक ही डेटा पर एक ही समय में कई अलग-अलग कार्य करता है।
Superword-level parallelism − एक वैश्वीकरण तकनीक जो इनलाइन कोड के समानांतरवाद का फायदा उठा सकती है।
समानांतर अनुप्रयोगों को आमतौर पर या तो ठीक-ठीक समानांतरवाद के रूप में वर्गीकृत किया जाता है, जिसमें उप-प्रकार प्रति सेकंड कई बार संवाद करेंगे; मोटे दानेदार समानता, जिसमें उप-प्रकार प्रति सेकंड कई बार संचार नहीं करते हैं; या शर्मनाक समानतावाद, जिसमें उपशीर्षक शायद ही कभी या कभी संवाद नहीं करते हैं. समानांतर कंप्यूटिंग में मैपिंग का उपयोग उप-अनुक्रम के बीच संचार की आवश्यकता के बिना एक अनुक्रम के सभी तत्वों के लिए एक सरल ऑपरेशन को लागू करके शर्मनाक समानांतर समस्याओं को हल करने के लिए किया जाता है।
21 वीं सदी में समानांतर कंप्यूटिंग के लोकप्रियकरण और विकास प्रोसेसर की आवृत्ति के जवाब में बिजली की दीवार से टकराने से हुई, आवृत्ति में वृद्धि एक प्रोसेसर में उपयोग की जाने वाली शक्ति की मात्रा में वृद्धि करती है, और प्रोसेसर की आवृत्ति को स्केल करना अब एक निश्चित बिंदु के बाद संभव नहीं है; इसलिए, प्रोग्रामर और निर्माताओं ने समानांतर सिस्टम सॉफ्टवेयर डिजाइन करना शुरू किया और बिजली की खपत और केंद्रीय प्रसंस्करण इकाइयों को गर्म करने के मुद्दे को हल करने के लिए कई कोर के साथ बिजली कुशल प्रोसेसर का उत्पादन किया. मल्टीकोर प्रोसेसर और जीपीयू के बढ़ते उपयोग के साथ समानांतर कंप्यूटिंग का महत्व बढ़ रहा है. सीपीयू डेटा के थ्रूपुट और एक अनुप्रयोग के भीतर समवर्ती गणना की संख्या बढ़ाने के लिए सीपीयू के साथ मिलकर काम करते हैं. समानता की शक्ति का उपयोग करते हुए, एक GPU एक निश्चित समय में सीपीयू की तुलना में अधिक काम पूरा कर सकता है।
समानांतर कंप्यूटिंग एक एकल कार्यक्रम के निष्पादन को संदर्भित करता है, जहां कुछ भागों को एक साथ निष्पादित किया जाता है और इसलिए समानांतर निष्पादन एक अनुक्रमिक से तेज होता है। ये हिस्से कई अलग-अलग स्तरों पर हो सकते हैं, एक ही कोर के भीतर जोड़ और गुणा के लिए अलग-अलग फ़्लोटिंग पॉइंट इकाइयाँ हो सकती हैं, इसलिए आपके पास निर्देश-स्तरीय समानता हो सकती है: दो निर्देश जो कोड में एक दूसरे के बाद एक साथ निष्पादित किए जा सकते हैं. फ़्लोटिंग पॉइंट इकाइयाँ इन दिनों वेक्टर निर्देशों या SIMD का उपयोग करती हैं: यदि आपके पास स्वतंत्र गुणन का एक गुच्छा है, तो वे एक वेक्टर निर्देश के साथ एक बार में 4 या 8 किए जा सकते हैं।
किसी प्रोग्राम का पूरा हिस्सा स्वतंत्र हो सकता है, जैसे दो फ़ंक्शन कॉल या लूप की पुनरावृत्तियों, उस स्थिति में आप फ़ंक्शन कॉल को एक साथ निष्पादित करने के लिए थ्रेड्स का उपयोग कर सकते हैं, या प्रत्येक थ्रेड को पुनरावृत्ति स्थान का हिस्सा बनाने दें, आपका बहु सूत्रण है यह काम करता है क्योंकि आपके प्रोसेसर में कई कोर हैं और इसलिए यह प्रत्येक धागे को एक अलग कोर पर रख सकता है और उन्हें एक साथ निष्पादित किया जाएगा. (हसवेल प्रोसेसर के रूप में, इंटेल में अंत में हार्डवेयर थ्रेड्स काम करते हैं, इसलिए आप वास्तव में एक ही कोर पर दो धागे रख सकते हैं, और आप दो बार कई थ्रेड्स कर सकते हैं जैसे कि कोर, सही स्पीडअप के करीब हैं) पिछले बिंदु में भ्रम का हिस्सा इस तथ्य से आता है कि थ्रेड्स एक सॉफ्टवेयर निर्माण हैं, इसलिए आप अपने हार्डवेयर के बिना मल्टी-थ्रेडिंग कर सकते हैं जो आपको किसी भी तरह का स्पीडअप देता है। आप जितने चाहें उतने धागे बना सकते हैं; यदि आपके पास एक से अधिक कोर हैं तो आप केवल स्पीडअप प्राप्त करते हैं. यदि आपके पास एक से अधिक सॉकेट / प्रोसेसर चिप के साथ एक नोड / मदरबोर्ड है, तो आप कितने सॉकेट्स द्वारा समर्थित थ्रेड्स की संख्या को गुणा कर सकते हैं, आमतौर पर वह दो या चार होता है।
अंत में, यदि आप नेटवर्किंग का उपयोग करना शुरू करते हैं, तो आप वास्तव में कई नोड्स / प्रोसेसर बोर्ड पर एक ही प्रोग्राम के कई अवतार ले सकते हैं. प्रत्येक नोड को तब प्रोग्राम डेटा के एक अलग हिस्से पर काम करने की आवश्यकता होती है, और कभी-कभी वे नेटवर्क पर डेटा का आदान-प्रदान करते हैं, आमतौर पर एमपीआई जैसे पुस्तकालय का उपयोग करते हुए, यह एकमात्र प्रकार का समानांतरवाद है जो तराजू, btw: सबसे बड़े सुपर कंप्यूटर में दसियों हज़ार नोड्स हैं. इसकी तुलना सबसे बड़े Intel Xeon प्रोसेसर पर 24 कोर (या 60-कुछ Xeon Phi पर) से करें।