Why Parallel Architecture?
Parallel computer Architecture अधिक से अधिक संख्या में प्रोसेसर का उपयोग करके कंप्यूटर सिस्टम के विकास में एक नया आयाम जोड़ता है।
सैधांतिक रूप में, अगर हम बड़ी संख्या में प्रोसेसर का उपयोग करते हैं तो वह स्वाभाविक ही एक प्रोसेसर के प्रदर्शन से अधिक होगा, मतलब कई प्रोसेसर जब एक साथ काम करेंगे तो प्रोसेस कम समय में execute हो जाएगी|
Parallel Computing
Parallel Computing प्रोसेसर का एक सेट है जो एक कम्प्यूटेशनल समस्या (Computational Problem) को हल करने के लिए सहकारी (cooperatively) रूप से काम करने में सक्षम है।
Parallel Computing बड़ी समस्याओं को छोटे, स्वतंत्र, अक्सर समान भागों में तोड़ने की प्रक्रिया को संदर्भित करता है जिसे साझा मेमोरी (Shared Memory) के माध्यम से संचार करने वाले एक से अधिक प्रोसेसर द्वारा एक साथ निष्पादित (execute) किया जा सकता है, जिसके अलग अलग परिणाम को आखिर में संयुक्त कर लिया जाता है। साधारण भाषा में समझने के लिए अगर मान लीजिये कोई प्रोसेस है जिसे execute करना है, पर वह प्रोसेस अगर किसी एक प्रोसेसर के द्वारा execute की जाएगी तो उसमे बहुत समय लगेगा, पर यदि अगर इसी प्रोसेस को execute करने के लिए एक से ज्यादा प्रोसेसर का प्रयोग किया जायेगा तो उसमे कम समय लगेगा|
Parallel Computing को और बेहतर ढंग से समझाने के लिए हम जिंदगी से जुड़े हुए उदाहरण को समझते हैं| जैसे अगर किसी भी चीज़ का टिकट लेने के लिए अगर सिर्फ एक कतार होगी तो सभी को टिकट मिलने में बहुत समय लगेगा और उसी जगह दो या दो से अधिक कतारें होती हैं अर्थात यदि दो या दो से अधिक कैशियर एक साथ बहुत सारे व्यक्तियों को टिकट दे रहे हैं, तो यह समय बचाने के साथ-साथ जटिलता को कम करने में मदद करता है।
Parallel Computing का पहला लक्ष्य उपलब्ध सभी प्रोसेसर की क्षमता को प्रोसेसिंग के लिए एक साथ प्रयोग करना है|
Parallel Computing इन्फ्रास्ट्रक्चर को आम तौर पर एक डेटासेंटर (Datacenter) में रखा जाता है, जहां एक सर्वर रैक (Server Rack) में कई कंप्यूटर (प्रोसेसर) स्थापित होते हैं| जब भी कोई प्रोसेसिंग की जरुरत होती है तो एप्लीकेशन सर्वर (Application Server) द्वारा process को छोटे-छोटे टुकड़ों में विभाजित कर दिया जाता है जिसे बाद में प्रत्येक सर्वर पर एक साथ निष्पादित (execute) किया जाता है।
समानांतर कंप्यूटिंग का उपयोग करने के कई कारण हैं, जैसे
- समय और पैसा बचाना
- Concurrency उपलब्ध करवाना
- बड़ी समस्याओं को हल करना
- प्रोसेस की जटिलता को कम करना
Types of Parallel Computing
Parallel Computing के कई प्रकार होते हैं और हर जगह आपको हो सकता है की अलग अलग प्रकार मिलेगे पर यह तीन प्रकार का होता है जोकि निम्नलिखित हैं
Bit-level Parallelism
Parallel Computing का वह रूप जिसमें प्रत्येक कार्य प्रोसेसर Word Size पर निर्भर होता है। जब भी बड़े आकार के डेटा पर कार्य करना होता है तो इसके अंतर्गत यह प्रोसेसर द्वारा निष्पादित (execute) किए जाने वाले निर्देशों की संख्या को कम कर देता है। एक बड़े ऑपरेशन को निर्देशों की श्रृंखला (series of instruction) में विभाजित कर देता है।
उदाहरण के लिए, एक 8-बिट प्रोसेसर है, और आप उस पर 16-बिट नंबरों पर एक ऑपरेशन करना चाहते हैं। सबसे पहले, इसे 8 लोअर-ऑर्डर बिट्स और फिर 8 उच्च-ऑर्डर बिट्स को प्रोसेस करना होगा। इसलिए, ऑपरेशन को निष्पादित (execute) करने के लिए दो निर्देशों की आवश्यकता है। पर अगर प्रोसेसर 16-बिट का है तो यह ऑपरेशन एक निर्देश (instruction) के साथ किया जा सकता है।
Instruction-level parallelism
यह एक हार्डवेयर आधारित Parallel Computing का प्रकार है, जिसमें प्रोसेसर रन-टाइम पर निर्णय लेता है कि एक साथ कितने निर्देशों को निष्पादित (execute) करना है| यह सॉफ्टवेयर आधारित Parallel Computing से बिलकुल अलग है क्यूंकि वहां एप्लीकेशन प्रोग्राम निर्णय लेता है की एक साथ कितने निर्देशों को और कैसे निष्पादित (execute) करना है| Instruction-level parallelism को हम डायनामिक परल्लेलिस्म (dynamic parallelism) भी कह सकते हैं|
Task parallelism
Task parallelism computing के अंतर्गत कार्यों को उप-कार्यों में विभाजित कर दिया जाता है। फिर, प्रत्येक छोटे छोटे कार्यों को निष्पादन (execute) करने के लिए आवंटित (allocate) किया जाता है। और, इन सभी कार्यों का निष्पादन (execution) प्रोसेसर द्वारा समवर्ती (concurrently, साथ-साथ) रूप से किया जाता है।
Parallel Computing के अनुप्रयोग
Parallel Computing के विभिन्न अनुप्रयोग हैं, जो इस प्रकार हैं:
- Parallel Computing के प्राथमिक अनुप्रयोगों में से एक डेटाबेस और डेटा माइनिंग है।
- सिस्टम का रीयल-टाइम सिमुलेशन (simulation) Parallel Computing का एक और उपयोग है।
- नेटवर्क वीडियो और मल्टीमीडिया जैसी प्रौद्योगिकियां।
- विज्ञान और इंजीनियरिंग।
- सहयोगात्मक (Collaborative) कार्य वातावरण।
- Parallel Computing का उपयोग संवर्धित वास्तविकता (augmented reality), उन्नत ग्राफिक्स (Advanced graphics)और वर्चुअल रियलिटी (virtual reality) में भी किया जाता है।
Advantages of Parallel computing
- समानांतर कंप्यूटिंग में, कार्य को पूरा करने के लिए अधिक संसाधनों का उपयोग किया जाता है जिससे समय कम हो जाता है और संभावित लागत में कटौती होती है। साथ ही, Parallel computing में प्रयोग होने वाले क्लस्टर बनाने के लिए सस्ते घटकों (कंप्यूटर भागों) का उपयोग किया जाता है।
- सीरियल कंप्यूटिंग (Serial computing) की तुलना में, पैरेलल कंप्यूटिंग (Parallel computing) कम समय में बड़ी समस्याओं को हल कर सकती है।
- वास्तविक दुनिया की जटिल प्रोग्रामिंग को समझने के लिए तथा उनकी मॉडलिंग के लिए Parallel computing सीरियल कंप्यूटिंग के मुकाबले बहुत ज्यादा उपयुक्त है।
- जब स्थानीय संसाधन सीमित होते हैं, तो यह आपको गैर-स्थानीय संसाधनों पर लाभ प्रदान कर सकता है।
- ऐसी कई समस्याएं हैं जो बहुत बड़ी हैं और एक कंप्यूटर पर उन्हें हल करना असंभव हो सकता है, पर Parallel computing से यह आसानी से संभव हो पाता है।
- Parallel computing का एक सबसे अच्छा लाभ यह है कि यह आपको कई कंप्यूटिंग संसाधनों का उपयोग करके एक समय में कई काम करने की अनुमति देता है।
- इसके अलावा, Parallel computing हार्डवेयर के लिए उपयुक्त है क्योंकि सीरियल कंप्यूटिंग संभावित कंप्यूटिंग शक्ति को बर्बाद कर देता है।
Disadvantages of Parallel Computing
- कई बार Parallel Computing को वास्तिविक रूप में ढाल मुश्किल हो सकता है|
- क्लस्टर के मामले में, Parallel Computing में बेहतर कूलिंग (cooling) तकनीकों की आवश्यकता होती है।
- Parallel Computing में प्रयोग होने वाली प्रबंधित एल्गोरिदम का निर्माण करना मुश्किल होता है|
- मल्टी-कोर आर्किटेक्चर के लिए उच्च बिजली की खपत होती है।
- Parallel Computing सिस्टम को कम युग्मन (low coupling) और उच्च सामंजस्य (high cohesion) की आवश्यकता होती है, जिसे बनाना मुश्किल है।
- Parallel Computing आधारित प्रोग्राम के लिए कोड करना सिर्फ तकनीकी रूप से कुशल और विशेषज्ञ प्रोग्रामर द्वारा ही किया जा सकता है।
Future of Parallel Computing
सीरियल कंप्यूटिंग (serial computing) से लेकर Parallel Computing तक, कम्प्यूटेशनल ग्राफ पूरी तरह से बदल गया है, अर्थात पहले जिस तरह से उपलब्ध प्रोसेसिंग का प्रयोग किया जाता था वैसा अब नहीं होता| जैसे इंटेल अब अपने सभी सिस्टम के साथ मल्टीकोर प्रोसेसर को शामिल करना शुरू कर दिया है, जो Parallel Computing की दिशा में एक बड़ा कदम है। बेहतर भविष्य के लिए, Parallel Computing ही कंप्यूटर के काम करने के तरीके में क्रांति ला सकती है| पैरेलल कंप्यूटिंग दुनिया को पहले से कहीं ज्यादा एक दूसरे से जोड़ने में अहम भूमिका निभाती है। इसके अलावा, मल्टी-प्रोसेसर कंप्यूटर, तेज नेटवर्क और वितरित सिस्टम (distributed system) के साथ पैरेलल कंप्यूटिंग का प्रयोग अधिक आवश्यक हो जाता है।