एम्डाल का नियम क्या है?
एम्डाल का नियम (Amdahl's Law) कंप्यूटर आर्किटेक्ट जीन एम्डाल द्वारा 1967 में दिया गया था। यह किसी कार्य के उस अधिकतम सैद्धांतिक स्पीडअप का अनुमान लगाता है, जब उस कार्य का केवल एक हिस्सा ही समानांतर रूप से चलाया जा सकता हो। यह समानांतर कंप्यूटिंग का एक बुनियादी सिद्धांत है और इंजीनियरों को अधिक प्रोसेसर, कोर या थ्रेड में निवेश करने से पहले व्यावहारिक उम्मीदें तय करने में मदद करता है।
इस कैलकुलेटर का उपयोग कैसे करें
दो मान भरें: पहला है समानांतर हिस्सा (\(p\)) — प्रोग्राम का वह अंश (0 और 1 के बीच) जिसे समानांतर रूप से चलाया जा सकता है — और दूसरा है स्पीडअप फैक्टर (\(s\)), जो आमतौर पर उस समानांतर हिस्से पर लगाए गए प्रोसेसर या कोर की संख्या होती है। कैलकुलेटर आपको कुल स्पीडअप, सैद्धांतिक अधिकतम स्पीडअप और समानांतर दक्षता बताता है।
सूत्र की व्याख्या
समीकरण है $$\text{Speedup} = \dfrac{1}{(1 - p) + \dfrac{p}{s}}$$ यहाँ \((1 - p)\) वह सीरियल (क्रमिक) अंश है जिसकी गति बिल्कुल नहीं बढ़ाई जा सकती। जैसे-जैसे \(s\) बहुत बड़ा होता जाता है, \(p/s\) शून्य के करीब पहुँचता है, इसलिए स्पीडअप \(1/(1 - p)\) पर सीमित हो जाता है। यही कारण है कि जो प्रोग्राम 90% समानांतर है, वह चाहे जितने भी प्रोसेसर जोड़ लें, कभी भी 10× से अधिक तेज़ नहीं चल सकता।
हल किया हुआ उदाहरण
मान लीजिए किसी प्रोग्राम का 90% हिस्सा समानांतर किया जा सकता है (\(p = 0.9\)) और आप 4 प्रोसेसर उपयोग करते हैं (\(s = 4\))। तब हर (denominator) $$(1 - 0.9) + \frac{0.9}{4} = 0.1 + 0.225 = 0.325$$ स्पीडअप $$\frac{1}{0.325} \approx 3.08\times$$ अधिकतम संभव स्पीडअप $$\frac{1}{0.1} = 10\times$$ और दक्षता \(3.08 / 4 \approx 76.9\%\)।
आपके परिणाम की व्याख्या करना
समग्र स्पीडअप वह है जो आप वास्तव में \(s\) प्रोसेसर के साथ प्राप्त करते हैं जो आपने दर्ज किए हैं — उदाहरण के लिए, 4.71× का परिणाम का अर्थ है कि समांतरीकृत प्रोग्राम सिंगल-प्रोसेसर संस्करण की तुलना में लगभग 4.71 गुना तेजी से चलता है। अधिकतम स्पीडअप, \(1/(1-p)\), वह निरपेक्ष सीमा है जिस तक आप अनंत संख्या में प्रोसेसर के साथ पहुंचेंगे। इन दोनों के बीच का अंतर आपको बताता है कि कितनी गुंजाइश बची है: यदि आपका समग्र स्पीडअप पहले से ही अधिकतम के करीब है, तो हार्डवेयर जोड़ने से मुश्किल से कोई मदद मिलेगी।
दक्षता सवाल का जवाब देती है "मैं जिन प्रोसेसर के लिए भुगतान कर रहा हूं, उन्हें मैं कितनी अच्छी तरह उपयोग कर रहा हूं?" 100% के पास दक्षता का अर्थ है कि प्रत्येक प्रोसेसर लगभग पूरी इकाई स्पीडअप में योगदान दे रहा है — संसाधनों का एक उत्कृष्ट उपयोग। कम दक्षता (उदाहरण के लिए, 30% से कम) का अर्थ है कि अधिकांश प्रोसेसर निष्क्रिय हैं या सीरीज़ भाग पर प्रतीक्षा कर रहे हैं, इसलिए आप ऐसे हार्डवेयर के लिए भुगतान कर रहे हैं जो बहुत कम उपयोगी कार्य करता है।
सीरीज़ अंश \(1-p\) निर्णायक सीमा है। यहां तक कि एक छोटा सीरीज़ अंश भी प्रदर्शन को कठोरता से सीमित करता है: \(p=0.95\) पर सीमा केवल 20× है, इसलिए लगभग 16–32 प्रोसेसर से आगे प्रत्येक नया प्रोसेसर लगभग कुछ नहीं जोड़ता है। एक व्यावहारिक अंगूठे का नियम यह है कि जब दक्षता आपकी स्वीकार्य थ्रेशहोल्ड से नीचे चली जाती है (अक्सर लागत-संवेदनशील काम के लिए 50–70%), तब प्रोसेसर जोड़ना बंद कर दें, क्योंकि उस बिंदु के बाद आप नगण्य लाभ के लिए पैसा खर्च कर रहे हैं। सीमा को और ऊपर धकेलने के लिए, आपको सीरीज़ अंश को ही कम करना होगा — एल्गोरिदमिक परिवर्तन जो \(p\) को बढ़ाते हैं, आमतौर पर केवल कोर जोड़ने से कहीं अधिक लाभजनक होते हैं।
मुख्य शर्तें और चर
- समांतर अंश (\(p\)) — प्रोग्राम के काम का वह अनुपात जो समांतर में निष्पादित किया जा सकता है, 0 और 1 के बीच दशमलव के रूप में व्यक्त किया गया है। 0.9 का मान का अर्थ है कि कार्यभार का 90% प्रोसेसर में विभाजित किया जा सकता है।
- सीरीज़ अंश (\(1-p\)) — वह भाग जो एक एकल प्रोसेसर पर क्रमानुसार चलना चाहिए और समांतरीकरण द्वारा तेज नहीं किया जा सकता है। यह अंश समग्र स्पीडअप पर कठोर ऊपरी सीमा निर्धारित करता है।
- समांतर भाग की स्पीडअप (\(s\)) — वह कारक जिससे समांतरीकरण योग्य भाग त्वरित होता है, आमतौर पर इसके लिए लागू प्रोसेसर या कोर की संख्या के बराबर।
- समग्र स्पीडअप — सिंगल-प्रोसेसर निष्पादन समय का अनुपात समांतर निष्पादन समय, \(1/\big((1-p)+p/s\big)\) के लिए। यह वास्तविक दुनिया का प्रदर्शन लाभ है।
- अधिकतम स्पीडअप — सैद्धांतिक सीमा \(1/(1-p)\) जो \(s\) के अनंत तक बढ़ने पर पहुंचाई जाती है, जो केवल सीरीज़ अंश द्वारा निर्धारित होती है।
- समांतर दक्षता — समग्र स्पीडअप को प्रोसेसर की संख्या से विभाजित किया गया, \(\text{स्पीडअप}/s\), प्रतिशत के रूप में व्यक्त किया गया; यह मापता है कि प्रत्येक प्रोसेसर कितनी प्रभावी ढंग से उपयोग किया जा रहा है।
अक्सर पूछे जाने वाले सवाल
प्रोसेसर बढ़ाने पर लाभ क्यों घटता जाता है? क्योंकि सीरियल हिस्सा अड़चन (bottleneck) बन जाता है। एक बार यह हावी हो जाए, तो अतिरिक्त प्रोसेसर से बहुत कम फ़र्क पड़ता है।
समानांतर दक्षता (parallel efficiency) क्या है? यह स्पीडअप को प्रोसेसर की संख्या से भाग देकर प्रतिशत में दर्शाई जाती है — यानी हर प्रोसेसर का कितनी कुशलता से उपयोग हो रहा है।
यह गुस्ताफसन के नियम (Gustafson's Law) से कैसे अलग है? एम्डाल का नियम समस्या के आकार को स्थिर मानता है; जबकि गुस्ताफसन का नियम मानता है कि समस्या प्रोसेसर की संख्या के साथ बढ़ती है, जिससे अधिक आशावादी परिणाम मिलते हैं।