डेटा समानांतरता: Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Parallelization across multiple processors in parallel computing environments}} File:Sequential vs. Data Parallel job execution.png|thumb|397x397px|अ...")
 
No edit summary
Line 1: Line 1:
{{short description|Parallelization across multiple processors in parallel computing environments}}
{{short description|Parallelization across multiple processors in parallel computing environments}}
[[File:Sequential vs. Data Parallel job execution.png|thumb|397x397px|अनुक्रमिक बनाम डेटा-समानांतर कार्य निष्पादन]][[समानांतर कंप्यूटिंग]] वातावरण में कई प्रोसेसरों में डेटा समानांतरवाद समानांतर है। यह डेटा को विभिन्न नोड्स में वितरित करने पर केंद्रित है, जो समानांतर में डेटा पर काम करते हैं। समानांतर में प्रत्येक तत्व पर काम करके इसे सरणियों और मैट्रिक्स जैसी नियमित डेटा संरचनाओं पर लागू किया जा सकता है। यह समांतरता के दूसरे रूप के रूप में [[कार्य समानता]] के विपरीत है।
[[File:Sequential vs. Data Parallel job execution.png|thumb|397x397px|अनुक्रमिक बनाम आँकडे़-समानांतर कार्य निष्पादन]][[Index.php?title=समक्रमिक अभिकलित्र|समक्रमिक अभिकलित्र]] वातावरण में कई संसाधित्र में आँकडे़ समानांतरवाद समानांतर है। यह आँकडे़ को विभिन्न नोड्स में वितरित करने पर केंद्रित है, जो समानांतर में आँकडे़ पर काम करते हैं। समानांतर में प्रत्येक तत्व पर काम करके इसे सरणियों और मैट्रिक्स जैसी नियमित आँकडे़ संरचनाओं पर लागू किया जा सकता है। यह समांतरता के दूसरे रूप के रूप में [[कार्य समानता]] के विपरीत है।


'एन' तत्वों की एक सरणी पर डेटा समानांतर कार्य को सभी प्रोसेसरों के बीच समान रूप से विभाजित किया जा सकता है। आइए मान लें कि हम दिए गए सरणी के सभी तत्वों को योग करना चाहते हैं और एक अतिरिक्त ऑपरेशन के लिए समय टा टाइम यूनिट है। अनुक्रमिक निष्पादन के मामले में, प्रक्रिया द्वारा लिया जाने वाला समय ''n''×Ta समय इकाइयां होगा क्योंकि यह एक सरणी के सभी तत्वों का योग करता है। दूसरी ओर, यदि हम इस कार्य को 4 प्रोसेसरों पर डेटा समानांतर कार्य के रूप में निष्पादित करते हैं तो लगने वाला समय (''n''/4)×Ta + मर्जिंग ओवरहेड समय इकाइयों तक कम हो जाएगा। समानांतर निष्पादन के परिणामस्वरूप अनुक्रमिक निष्पादन पर 4 का स्पीडअप होता है। ध्यान देने वाली एक महत्वपूर्ण बात यह है कि डेटा समानांतर प्रोग्रामिंग मॉडल के प्रदर्शन के मूल्यांकन में संदर्भ की लोकैलिटी एक महत्वपूर्ण भूमिका निभाती है। डेटा की स्थानीयता प्रोग्राम द्वारा निष्पादित मेमोरी एक्सेस के साथ-साथ कैश के आकार पर निर्भर करती है।
'''n''<nowiki/>' तत्वों की एक सरणी पर आँकडे़ समानांतर कार्य को सभी संसाधित्र के बीच समान रूप से विभाजित किया जा सकता है। आइए मान लें कि हम दिए गए सरणी के सभी तत्वों को योग करना चाहते हैं और एक अतिरिक्त संचालन के लिए समय Ta टाइम यूनिट है। अनुक्रमिक निष्पादन के मामले में, प्रक्रिया द्वारा लिया जाने वाला समय ''n''×Ta समय इकाइयां होगा क्योंकि यह एक सरणी के सभी तत्वों का योग करता है। दूसरी ओर, यदि हम इस कार्य को 4 संसाधित्र पर आँकडे़ समानांतर कार्य के रूप में निष्पादित करते हैं तो लगने वाला समय (''n''/4)×Ta + विलयन उपरिव्यय समय इकाइयों तक कम हो जाएगा। समानांतर निष्पादन के परिणामस्वरूप अनुक्रमिक निष्पादन पर 4 का गति वर्धन होता है। ध्यान देने वाली एक महत्वपूर्ण बात यह है कि आँकडे़ समानांतर क्रमादेशन मॉडल के प्रदर्शन के मूल्यांकन में संदर्भ की अवस्थिति एक महत्वपूर्ण भूमिका निभाती है। आँकडे़ की स्थानीयता क्रमादेश द्वारा निष्पादित मेमोरी एक्सेस के साथ-साथ कैश के आकार पर निर्भर करती है।


== इतिहास ==
== इतिहास ==
सोलोमन मशीन के विकास के साथ 1960 के दशक में डेटा समानता की अवधारणा का दोहन शुरू हुआ।<ref>{{Cite web|url=https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/50610097/pdf?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjc2RsX2FwaSIsImF1ZCI6ImNzZGxfYXBpX2Rvd25sb2FkX3Rva2VuIiwic3ViIjoiYW5vbnltb3VzQGNvbXB1dGVyLm9yZyIsImVtYWlsIjoiYW5vbnltb3VzQGNvbXB1dGVyLm9yZyIsImV4cCI6MTU2NTEwNTAxMX0.AD74lJbBAdGWNvVIpeeTmyF1S7hb4_rUDeSeoDoJ0R4|title=The Solomon Computer}}</ref> सोलोमन मशीन, जिसे [[वेक्टर प्रोसेसर]] भी कहा जाता है, को बड़े डेटा ऐरे (लगातार समय के चरणों में कई डेटा पर संचालन) पर काम करके गणितीय कार्यों के प्रदर्शन में तेजी लाने के लिए विकसित किया गया था। एक ही निर्देश का उपयोग करके एक ही समय में कई डेटा पर संचालन करके डेटा संचालन की संगामिति (कंप्यूटर विज्ञान) का भी शोषण किया गया। इन प्रोसेसरों को 'सरणी प्रोसेसर' कहा जाता था।<ref>{{Cite web|url=https://www.ece.cmu.edu/~ece740/f13/lib/exe/fetch.php%3Fmedia%3Dseth-740-fall13-module5.1-simd-vector-gpu.pdf|title=SIMD/Vector/GPU|access-date=2016-09-07}}</ref> 1980 के दशक में, शब्द पेश किया गया था <ref>[[Daniel Hillis|Hillis, W. Daniel]] and [[Guy Steele|Steele, Guy L.]], [https://dx.doi.org/10.1145/7902.7903 <cite>Data Parallel Algorithms</cite>] [[Communications of the ACM]]December 1986</ref> इस प्रोग्रामिंग शैली का वर्णन करने के लिए, जिसका व्यापक रूप से [[C*]] जैसी डेटा समानांतर भाषाओं में [[कनेक्शन मशीन]]ों को प्रोग्राम करने के लिए उपयोग किया जाता था। आज, [[ ग्राफ़िक्स प्रोसेसिंग युनिट ]]्स (जीपीयू) में डेटा समानता का सबसे अच्छा उदाहरण है, जो एक ही निर्देश का उपयोग करके अंतरिक्ष और समय में कई डेटा पर संचालन की दोनों तकनीकों का उपयोग करते हैं।
सोलोमन मशीन के विकास के साथ 1960 के दशक में आँकडे़ समानता की अवधारणा का दोहन शुरू हुआ।<ref>{{Cite web|url=https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/50610097/pdf?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjc2RsX2FwaSIsImF1ZCI6ImNzZGxfYXBpX2Rvd25sb2FkX3Rva2VuIiwic3ViIjoiYW5vbnltb3VzQGNvbXB1dGVyLm9yZyIsImVtYWlsIjoiYW5vbnltb3VzQGNvbXB1dGVyLm9yZyIsImV4cCI6MTU2NTEwNTAxMX0.AD74lJbBAdGWNvVIpeeTmyF1S7hb4_rUDeSeoDoJ0R4|title=The Solomon Computer}}</ref> सोलोमन मशीन, जिसे [[Index.php?title=सदिश संसाधित्र|वेक्टर संसाधित्र]] भी कहा जाता है, बड़े आँकडे़ ऐरे (लगातार समय के चरणों में कई आँकडे़ पर संचालन) पर काम करके गणितीय कार्यों के प्रदर्शन में तेजी लाने के लिए विकसित किया गया था। एक ही निर्देश का उपयोग करके एक ही समय में कई आँकडे़ पर संचालन करके आँकडे़ संचालन की संगामिति (अभिकलित्र विज्ञान) को भी चूषित किया गया। इन संसाधित्र को 'सरणी संसाधित्र' कहा जाता था।<ref>{{Cite web|url=https://www.ece.cmu.edu/~ece740/f13/lib/exe/fetch.php%3Fmedia%3Dseth-740-fall13-module5.1-simd-vector-gpu.pdf|title=SIMD/Vector/GPU|access-date=2016-09-07}}</ref> 1980 के दशक में, शब्द पेश किया गया था <ref>[[Daniel Hillis|Hillis, W. Daniel]] and [[Guy Steele|Steele, Guy L.]], [https://dx.doi.org/10.1145/7902.7903 <cite>Data Parallel Algorithms</cite>] [[Communications of the ACM]]December 1986</ref> इस क्रमादेशन शैली का वर्णन करने के लिए, जिसका व्यापक रूप से [[C*]] जैसी आँकडे़ समानांतर भाषाओं में [[Index.php?title=कनेक्शन मशीनो|कनेक्शन मशीनो]] को क्रमादेश करने के लिए उपयोग किया जाता था। आज, [[ ग्राफ़िक्स प्रोसेसिंग युनिट | ग्राफ़िक्स प्रोसेसिंग युनिट]] (जीपीयू) में आँकडे़ समानता का सबसे अच्छा उदाहरण है, जो एक ही निर्देश का उपयोग करके समष्टि और समय में कई आँकडे़ पर संचालन की दोनों तकनीकों का उपयोग करते हैं।


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


== विवरण ==
== विवरण ==


निर्देशों के एक सेट ([[SIMD]]) को निष्पादित करने वाले मल्टीप्रोसेसर सिस्टम में, डेटा समानता तब प्राप्त होती है जब प्रत्येक प्रोसेसर अलग-अलग वितरित डेटा पर समान कार्य करता है। कुछ स्थितियों में, एकल निष्पादन थ्रेड सभी डेटा पर संचालन को नियंत्रित करता है। दूसरों में, अलग-अलग धागे ऑपरेशन को नियंत्रित करते हैं, लेकिन वे एक ही कोड को निष्पादित करते हैं।
निर्देशों के एक सेट ([[SIMD]]) को निष्पादित करने वाले बहु संसाधित्र प्रणाली में, आँकडे़ समानता तब प्राप्त होती है जब प्रत्येक संसाधित्र अलग-अलग वितरित आँकडे़ पर समान कार्य करता है। कुछ स्थितियों में, एकल निष्पादन थ्रेड सभी आँकडे़ पर संचालन को नियंत्रित करता है। दूसरों में, अलग-अलग थ्रेड संचालन को नियंत्रित करते हैं, लेकिन वे एक ही संकेतावली को निष्पादित करते हैं।


उदाहरण के लिए, आव्यूह गुणन और जोड़ को क्रमिक तरीके से विचार करें जैसा कि उदाहरण में चर्चा की गई है।
उदाहरण के लिए, आव्यूह गुणन और जोड़ को क्रमिक तरीके से विचार करें जैसा कि उदाहरण में चर्चा की गई है।


== उदाहरण ==
== उदाहरण ==
नीचे गुणा और दो आव्यूहों के जोड़ के लिए अनुक्रमिक छद्म कोड है जहां परिणाम मैट्रिक्स में संग्रहीत किया जाता है {{var|C}}. गुणा के लिए छद्म कोड दो आव्यूहों के डॉट गुणनफल की गणना करता है {{var|A}}, {{var|B}} और परिणाम को आउटपुट मैट्रिक्स में संग्रहीत करता है {{var|C}}.
नीचे गुणा और दो आव्यूहों के जोड़ के लिए अनुक्रमिक छद्म संकेतावली है जहां परिणाम मैट्रिक्स में संग्रहीत किया जाता है {{var|C}}. गुणा के लिए छद्म संकेतावली दो आव्यूहों के डॉट गुणनफल की गणना करता है {{var|A}}, {{var|B}} और {{var|C}} परिणाम को  निर्गत मैट्रिक्स में संग्रहीत करता है।


यदि निम्नलिखित प्रोग्रामों को क्रमिक रूप से क्रियान्वित किया जाता है, तो परिणाम की गणना करने में लगने वाला समय होगा <math>O(n^3)</math>(पंक्ति की लंबाई मानते हुए और दोनों आव्यूहों की स्तंभ लंबाई n हैं) और <math>O(n)</math>क्रमशः गुणा और जोड़ के लिए।
यदि निम्नलिखित क्रमादेशों को क्रमिक रूप से क्रियान्वित किया जाता है, तो परिणाम की गणना करने में लगने वाला समय होगा <math>O(n^3)</math>(पंक्ति की लंबाई मानते हुए और दोनों आव्यूहों की स्तंभ लंबाई n हैं) और <math>O(n)</math>क्रमशः गुणा और जोड़ के लिए है।
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
// Matrix multiplication
// Matrix multiplication
Line 39: Line 39:
     c[i] = a[i] + b[i];
     c[i] = a[i] + b[i];
}
}
</syntaxhighlight>हम इसे तेजी से निष्पादित करने के लिए पूर्ववर्ती कोड में डेटा समानता का फायदा उठा सकते हैं क्योंकि अंकगणित लूप स्वतंत्र है। [[OpenMP]] का उपयोग करके मैट्रिक्स गुणन कोड का समानांतरकरण प्राप्त किया जाता है। एक OpenMP निर्देश, omp समानांतर के लिए संकलक को समानांतर में लूप के लिए कोड निष्पादित करने का निर्देश देता है। गुणन के लिए, हम मैट्रिक्स और बी को क्रमशः पंक्तियों और स्तंभों के साथ ब्लॉक में विभाजित कर सकते हैं। यह हमें मैट्रिक्स सी में प्रत्येक तत्व की व्यक्तिगत रूप से गणना करने की अनुमति देता है जिससे कार्य समानांतर हो जाता है। उदाहरण के लिए: [एम एक्स एन] डॉट बी [एन एक्स के] में समाप्त किया जा सकता है <math>O(n)</math> के बजाय <math>O(m*n*k)</math> जब m*k प्रोसेसर का उपयोग करके समानांतर में निष्पादित किया जाता है।
</syntaxhighlight>हम इसे तेजी से निष्पादित करने के लिए पूर्ववर्ती संकेतावली में आँकडे़ समानता का फायदा उठा सकते हैं क्योंकि अंकगणित परिपथ स्वतंत्र है। [[OpenMP]] का उपयोग करके मैट्रिक्स गुणन संकेतावली का समानांतरकरण प्राप्त किया जाता है। एक OpenMP निर्देश, omp समानांतर के लिए संकलक को समानांतर में परिपथ के लिए संकेतावली निष्पादित करने का निर्देश देता है। गुणन के लिए, हम मैट्रिक्स A और B को क्रमशः पंक्तियों और स्तंभों के साथ ब्लॉक में विभाजित कर सकते हैं। यह हमें मैट्रिक्स C में प्रत्येक तत्व की व्यक्तिगत रूप से गणना करने की अनुमति देता है जिससे कार्य समानांतर हो जाता है। उदाहरण के लिए: ''A[m x n] dot B [n x k]'' में समाप्त किया जा सकता है <math>O(n)</math> के बजाय <math>O(m*n*k)</math> जब m*k संसाधित्र का उपयोग करके समानांतर में निष्पादित किया जाता है।
  [[File:Data Parallelism in matrix multiplication.png|center|thumb|750x750px|मैट्रिक्स गुणन में डेटा समानता]]
  [[File:Data Parallelism in matrix multiplication.png|center|thumb|750x750px|मैट्रिक्स गुणन में आँकडे़ समानता]]
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
// Matrix multiplication in parallel
// Matrix multiplication in parallel
Line 53: Line 53:
     }
     }
}
}
</syntaxhighlight>यह उदाहरण से देखा जा सकता है कि बहुत सारे प्रोसेसर की आवश्यकता होगी क्योंकि मैट्रिक्स का आकार बढ़ता रहेगा। निष्पादन समय को कम रखना प्राथमिकता है लेकिन जैसे-जैसे मैट्रिक्स का आकार बढ़ता है, हमें ऐसी प्रणाली की जटिलता और उससे जुड़ी लागतों जैसी अन्य बाधाओं का सामना करना पड़ता है। इसलिए, सिस्टम में प्रोसेसर की संख्या को सीमित करते हुए, हम अभी भी उसी सिद्धांत को लागू कर सकते हैं और दो मैट्रिक्स के उत्पाद की गणना करने के लिए डेटा को बड़ी मात्रा में विभाजित कर सकते हैं।<ref>{{Cite web|url=https://computing.llnl.gov/tutorials/parallel_comp/|title=समानांतर कंप्यूटिंग का परिचय|last=Barney|first=Blaise|website=computing.llnl.gov|access-date=2016-09-07|archive-date=2013-06-10|archive-url=https://web.archive.org/web/20130610122229/https://computing.llnl.gov/tutorials/parallel_comp/|url-status=dead}}</ref>
</syntaxhighlight>यह उदाहरण से देखा जा सकता है कि बहुत सारे संसाधित्र की आवश्यकता होगी क्योंकि मैट्रिक्स का आकार बढ़ता रहेगा। निष्पादन समय को कम रखना प्राथमिकता है लेकिन जैसे-जैसे मैट्रिक्स का आकार बढ़ता है, हमें ऐसी प्रणाली की जटिलता और उससे जुड़ी लागतों जैसी अन्य बाधाओं का सामना करना पड़ता है। इसलिए, प्रणाली में संसाधित्र की संख्या को सीमित करते हुए, हम अभी भी उसी सिद्धांत को लागू कर सकते हैं और दो मैट्रिक्स के उत्पाद की गणना करने के लिए आँकडे़ को बड़ी मात्रा में विभाजित कर सकते हैं।<ref>{{Cite web|url=https://computing.llnl.gov/tutorials/parallel_comp/|title=समानांतर कंप्यूटिंग का परिचय|last=Barney|first=Blaise|website=computing.llnl.gov|access-date=2016-09-07|archive-date=2013-06-10|archive-url=https://web.archive.org/web/20130610122229/https://computing.llnl.gov/tutorials/parallel_comp/|url-status=dead}}</ref>
डेटा समानांतर कार्यान्वयन में सरणियों को जोड़ने के लिए, दो केंद्रीय प्रसंस्करण इकाइयों (सीपीयू) और बी के साथ एक अधिक मामूली प्रणाली मान लें, सीपीयू सरणियों के शीर्ष आधे से सभी तत्वों को जोड़ सकता है, जबकि सीपीयू बी सभी तत्वों को जोड़ सकता है सरणियों का निचला आधा भाग। चूंकि दो प्रोसेसर समानांतर में काम करते हैं, सरणी जोड़ने का काम अकेले एक सीपीयू का उपयोग करके सीरियल में एक ही ऑपरेशन करने का आधा समय लेगा।
आँकडे़ समानांतर कार्यान्वयन में सरणियों को जोड़ने के लिए, दो केंद्रीय प्रसंस्करण इकाइयों (सीपीयू) A और B के साथ एक अधिक मामूली प्रणाली मान लें, सीपीयू A सरणियों के शीर्ष आधे से सभी तत्वों को जोड़ सकता है, जबकि सीपीयू B सभी तत्वों को जोड़ सकता है सरणियों का निचला आधा भाग। चूंकि दो संसाधित्र समानांतर में काम करते हैं, सरणी जोड़ने का काम अकेले एक सीपीयू का उपयोग करके सीरियल में एक ही संचालन करने का आधा समय लेगा।


प्रोग्राम नीचे [[स्यूडोकोड]] में व्यक्त किया गया है—जो कुछ मनमाना ऑपरेशन लागू करता है, <code>foo</code>, सरणी में प्रत्येक तत्व पर <code>d</code>—डेटा समानता दिखाता है:<ref group="nb">Some input data (e.g. when <code>d.length</code> evaluates to 1 and <code>round</code> rounds towards zero [this is just an example, there are no requirements on what type of rounding is used]) will lead to <code>lower_limit</code> being greater than <code>upper_limit</code>, it's assumed that the loop will exit immediately (i.e. zero iterations will occur) when this happens.</ref>
क्रमादेश नीचे [[स्यूडोकोड|स्यूडोसंकेतावली]] में व्यक्त किया गया है—जो कुछ मनमाना संचालन लागू करता है, <code>foo</code>, सरणी में प्रत्येक तत्व पर <code>d</code>—आँकडे़ समानता दिखाता है:<ref group="nb">Some input data (e.g. when <code>d.length</code> evaluates to 1 and <code>round</code> rounds towards zero [this is just an example, there are no requirements on what type of rounding is used]) will lead to <code>lower_limit</code> being greater than <code>upper_limit</code>, it's assumed that the loop will exit immediately (i.e. zero iterations will occur) when this happens.</ref>
अगर सीपीयू = तब
अगर सीपीयू = A तब
     लोअर_लिमिट: = 1
     '''if''' CPU = "a" '''then'''
     अपर_लिमिट: = राउंड (डी.लेंथ / 2)
 
  और अगर सीपीयू = बी तो
    lower_limit := 1
     निचला_लिमिट: = गोल (डी.लेंथ / 2) + 1
     upper_limit := round(d.length / 2)
     अपर_लिमिट: = डी। लंबाई
  '''else if''' CPU = "b" '''then'''
     lower_limit := round(d.length / 2) + 1
     upper_limit := d.length
   
   
  for i के लिए lower_limit से upper_limit तक 1 do
  '''for''' i from lower_limit to upper_limit by 1 '''do'''
     फू (डी [i])
     foo(d[i])
2 संसाधित्र प्रणाली पर निष्पादित [[एसपीएमडी]] प्रणाली में, दोनों सीपीयू संकेतावली को निष्पादित करेंगे।


2 प्रोसेसर सिस्टम पर निष्पादित [[एसपीएमडी]] सिस्टम में, दोनों सीपीयू कोड को निष्पादित करेंगे।
प्रसंस्करण (कार्य समानांतरता) के विपरीत, आँकडे़ समांतरता आँकडे़ की वितरित (समानांतर) प्रकृति पर जोर देती है। अधिकांश वास्तविक कार्यक्रम कार्य समांतरता और आँकडे़ समांतरता के बीच निरंतरता पर कहीं गिर जाते हैं।
 
प्रसंस्करण (कार्य समानांतरता) के विपरीत, डेटा समांतरता डेटा की वितरित (समानांतर) प्रकृति पर जोर देती है। अधिकांश वास्तविक कार्यक्रम कार्य समांतरता और डेटा समांतरता के बीच निरंतरता पर कहीं गिर जाते हैं।


== समांतरता के लिए कदम ==
== समांतरता के लिए कदम ==
Line 77: Line 78:
{| class="wikitable"
{| class="wikitable"
|-
|-
! Type
! प्रकार
! Description
! विवरण
|-
|-
| Decomposition
| अपघटन
| The program is broken down into tasks, the smallest exploitable unit of concurrence.
| कार्यक्रम को कार्यों में विभाजित किया जाता है जो सहमति की सबसे छोटी कारनामिक इकाई है।
|-
|-
| Assignment
| समनुदेशन
| Tasks are assigned to processes.
| प्रक्रियाओं को कार्य सौंपे जाते हैं।
|-
|-
| Orchestration
| वाद्यवृंदन
| Data access, communication, and synchronization of processes.
| डेटा अभिगम, संचार, और प्रक्रियाओं का समन्वयन।
|-
|-
| Mapping
| प्रतिचित्रिण
| Processes are bound to processors.
| प्रक्रियाओं को प्रोसेसर से जोड़ा जाता है।
|}
|}




== डेटा समानता बनाम कार्य समानता ==
== आँकडे़ समानता बनाम कार्य समानता ==
{| class="wikitable"
{| class="wikitable"
!Data parallelism
!डेटा समानांतरता
!Task parallelism
!कार्य समानांतरता
|-
|-
|Same operations are performed on different subsets of same data.
|एक ही संचालन एक ही डेटा के विभिन्न उपसमूहों पर किया जाता है।
|Different operations are performed on the same or different data.
|अलग-अलग ऑपरेशन एक ही या अलग आंकड़े पर किए जाते हैं।
|-
|-
|Synchronous computation
|तुल्यकालिक अभिकलन
|Asynchronous computation
|अतुल्यकालिक अभिकलन
|-
|-
|Speedup is more as there is only one execution thread operating on all sets of data.
|स्पीडअप अधिक है क्योंकि डेटा के सभी सेटों पर केवल एक निष्पादन थ्रेड चल रहा है।
|Speedup is less as each processor will execute a different thread or process on the same or different set of data.
|स्पीडअप कम है क्योंकि प्रत्येक प्रोसेसर डेटा के समान या अलग सेट पर एक अलग थ्रेड या प्रक्रिया निष्पादित करेगा।
|-
|-
|Amount of parallelization is proportional to the input data size.
|समांतरता की मात्रा इनपुट डेटा आकार के आनुपातिक होती है।
|Amount of parallelization is proportional to the number of independent tasks to be performed.
|समांतरता की मात्रा स्वतंत्र कार्यों की संख्या के आनुपातिक होती है।
|-
|-
|Designed for optimum [[Load balancing (computing)|load balance]] on multi processor system.
|मल्टी प्रोसेसर सिस्टम पर इष्टतम लोड संतुलन के लिए अभिकल्पित किया गया।
|Load balancing depends on the availability of the hardware and scheduling algorithms like static and dynamic scheduling.
|भार संतुलन हार्डवेयर और शेड्यूलिंग एल्गोरिदम की उपलब्धता पर निर्भर करता है जैसे स्थिर और गतिशील अनुसूचन।
|}
|}




== डेटा समानता बनाम मॉडल समानता ==
== आँकडे़ समानता बनाम मॉडल समानता ==
{| class="wikitable"
{| class="wikitable"
!Data parallelism
!Data parallelism
Line 133: Line 134:




== मिश्रित डेटा और कार्य समानता ==
== मिश्रित आँकडे़ और कार्य समानता ==
डेटा और कार्य समानता, एक ही अनुप्रयोग के लिए उन्हें एक साथ जोड़कर एक साथ लागू किया जा सकता है। इसे मिश्रित डेटा और कार्य समानता कहा जाता है। मिश्रित समानता के लिए परिष्कृत शेड्यूलिंग एल्गोरिदम और सॉफ़्टवेयर समर्थन की आवश्यकता होती है। संचार धीमा होने और प्रोसेसर की संख्या बड़ी होने पर यह समानता का सबसे अच्छा प्रकार है।<ref>{{Cite web|url=http://www.netlib.org/lapack/lawnspdf/lawn97.pdf|title=The Netlib}}</ref>
आँकडे़ और कार्य समानता, एक ही अनुप्रयोग के लिए उन्हें एक साथ जोड़कर एक साथ लागू किया जा सकता है। इसे मिश्रित आँकडे़ और कार्य समानता कहा जाता है। मिश्रित समानता के लिए परिष्कृत शेड्यूलिंग एल्गोरिदम और सॉफ़्टवेयर समर्थन की आवश्यकता होती है। संचार धीमा होने और संसाधित्र की संख्या बड़ी होने पर यह समानता का सबसे अच्छा प्रकार है।<ref>{{Cite web|url=http://www.netlib.org/lapack/lawnspdf/lawn97.pdf|title=The Netlib}}</ref>
मिश्रित डेटा और कार्य समानता के कई अनुप्रयोग हैं। यह विशेष रूप से निम्नलिखित अनुप्रयोगों में प्रयोग किया जाता है:
मिश्रित आँकडे़ और कार्य समानता के कई अनुप्रयोग हैं। यह विशेष रूप से निम्नलिखित अनुप्रयोगों में प्रयोग किया जाता है:
# मिश्रित डेटा और कार्य समानता वैश्विक जलवायु मॉडलिंग में अनुप्रयोगों को ढूंढती है। बड़े डेटा समानांतर संगणनाएं पृथ्वी के वायुमंडल और महासागरों का प्रतिनिधित्व करने वाले डेटा के ग्रिड बनाकर की जाती हैं और भौतिक प्रक्रियाओं के कार्य और मॉडल को अनुकरण करने के लिए कार्य समानांतरता को नियोजित किया जाता है।
# मिश्रित आँकडे़ और कार्य समानता वैश्विक जलवायु मॉडलिंग में अनुप्रयोगों को ढूंढती है। बड़े आँकडे़ समानांतर संगणनाएं पृथ्वी के वायुमंडल और महासागरों का प्रतिनिधित्व करने वाले आँकडे़ के ग्रिड बनाकर की जाती हैं और भौतिक प्रक्रियाओं के कार्य और मॉडल को अनुकरण करने के लिए कार्य समानांतरता को नियोजित किया जाता है।
# टाइमिंग आधारित [[सर्किट सिमुलेशन]] में। डेटा को विभिन्न उप-सर्किटों के बीच विभाजित किया जाता है और कार्यों से ऑर्केस्ट्रेशन के साथ समानता हासिल की जाती है।
# टाइमिंग आधारित [[सर्किट सिमुलेशन]] में। आँकडे़ को विभिन्न उप-सर्किटों के बीच विभाजित किया जाता है और कार्यों से ऑर्केस्ट्रेशन के साथ समानता हासिल की जाती है।


== डेटा समानांतर प्रोग्रामिंग वातावरण ==
== आँकडे़ समानांतर क्रमादेशन वातावरण ==
विभिन्न प्रकार के डेटा समानांतर प्रोग्रामिंग वातावरण आज उपलब्ध हैं, जिनमें से सबसे व्यापक रूप से उपयोग किए जाते हैं:
विभिन्न प्रकार के आँकडे़ समानांतर क्रमादेशन वातावरण आज उपलब्ध हैं, जिनमें से सबसे व्यापक रूप से उपयोग किए जाते हैं:
# [[संदेश पासिंग इंटरफ़ेस]]: यह समानांतर कंप्यूटरों के लिए एक क्रॉस-प्लेटफ़ॉर्म संदेश पासिंग प्रोग्रामिंग इंटरफ़ेस है। यह उपयोगकर्ताओं को सी, सी ++ और फोरट्रान में पोर्टेबल संदेश पासिंग प्रोग्राम लिखने की अनुमति देने के लिए पुस्तकालय कार्यों के शब्दार्थ को परिभाषित करता है।
# [[संदेश पासिंग इंटरफ़ेस]]: यह समानांतर कंप्यूटरों के लिए एक क्रॉस-प्लेटफ़ॉर्म संदेश पासिंग क्रमादेशन इंटरफ़ेस है। यह उपयोगकर्ताओं को सी, सी ++ और फोरट्रान में पोर्टेबल संदेश पासिंग क्रमादेश लिखने की अनुमति देने के लिए पुस्तकालय कार्यों के शब्दार्थ को परिभाषित करता है।
# ओपन मल्टी प्रोसेसिंग<ref>{{Cite web|url=http://openmp.org/wp/|title=ोपंम्प.ऑर्ग|website=openmp.org|access-date=2016-09-07|archive-url=https://web.archive.org/web/20160905232633/http://openmp.org/wp/|archive-date=2016-09-05|url-status=dead}}</ref> (ओपन एमपी): यह एक एप्लिकेशन प्रोग्रामिंग इंटरफेस (एपीआई) है जो मल्टीप्रोसेसर सिस्टम के कई प्लेटफॉर्म पर साझा मेमोरी प्रोग्रामिंग मॉडल का समर्थन करता है।
# ओपन मल्टी प्रोसेसिंग<ref>{{Cite web|url=http://openmp.org/wp/|title=ोपंम्प.ऑर्ग|website=openmp.org|access-date=2016-09-07|archive-url=https://web.archive.org/web/20160905232633/http://openmp.org/wp/|archive-date=2016-09-05|url-status=dead}}</ref> (ओपन एमपी): यह एक एप्लिकेशन क्रमादेशन इंटरफेस (एपीआई) है जो बहु संसाधित्र प्रणाली के कई प्लेटफॉर्म पर साझा मेमोरी क्रमादेशन मॉडल का समर्थन करता है।
# [[CUDA]] और [[OpenACC]]: CUDA और OpenACC (क्रमशः) समानांतर कंप्यूटिंग एपीआई प्लेटफॉर्म हैं जो एक सॉफ्टवेयर इंजीनियर को सामान्य प्रयोजन प्रसंस्करण के लिए GPU की कम्प्यूटेशनल इकाइयों का उपयोग करने की अनुमति देने के लिए डिज़ाइन किए गए हैं।
# [[CUDA]] और [[OpenACC]]: CUDA और OpenACC (क्रमशः) समक्रमिक अभिकलित्र एपीआई प्लेटफॉर्म हैं जो एक सॉफ्टवेयर इंजीनियर को सामान्य प्रयोजन प्रसंस्करण के लिए GPU की कम्प्यूटेशनल इकाइयों का उपयोग करने की अनुमति देने के लिए डिज़ाइन किए गए हैं।
# [[थ्रेडिंग बिल्डिंग ब्लॉक्स]] और [[राफ्टलिब]]: दोनों ओपन सोर्स प्रोग्रामिंग वातावरण जो विषम संसाधनों में सी / सी ++ वातावरण में मिश्रित डेटा / कार्य समानता को सक्षम करते हैं।
# [[थ्रेडिंग बिल्डिंग ब्लॉक्स]] और [[राफ्टलिब]]: दोनों ओपन सोर्स क्रमादेशन वातावरण जो विषम संसाधनों में सी / सी ++ वातावरण में मिश्रित आँकडे़ / कार्य समानता को सक्षम करते हैं।


== अनुप्रयोग ==
== अनुप्रयोग ==
डेटा समानांतरवाद भौतिकी, रसायन विज्ञान, जीव विज्ञान, भौतिक विज्ञान से लेकर सिग्नल प्रोसेसिंग तक विभिन्न क्षेत्रों में अपने अनुप्रयोगों को पाता है। विज्ञान आण्विक गतिशीलता जैसे मॉडलों के अनुकरण के लिए डेटा समानांतरता को लागू करता है,<ref>{{Cite journal|last1=Boyer|first1=L. L|last2=Pawley|first2=G. S|date=1988-10-01|title=बड़े पैमाने पर समानांतर कंप्यूटर का उपयोग करके जोड़ीदार बलों के साथ बातचीत करने वाले कणों के समूहों की आणविक गतिशीलता|journal=Journal of Computational Physics|volume=78|issue=2|pages=405–423|doi=10.1016/0021-9991(88)90057-5|bibcode=1988JCoPh..78..405B}}</ref> जीनोम डेटा का अनुक्रम विश्लेषण <ref>{{Cite journal|journal=IEEE Transactions on Parallel and Distributed Systems|volume=9|issue=3|pages=283–294|doi=10.1109/71.674320|year=1998|last1=Yap|first1=T.K.|last2=Frieder|first2=O.|last3=Martino|first3=R.L.|title=जैविक अनुक्रम विश्लेषण में समानांतर संगणना|citeseerx = 10.1.1.30.2819}}</ref> और अन्य भौतिक घटनाएँ। डेटा समानता के लिए सिग्नल प्रोसेसिंग में ड्राइविंग बल वीडियो एन्कोडिंग, इमेज और ग्राफिक्स प्रोसेसिंग, वायरलेस संचार हैं <ref>{{Cite journal|last1=Singh|first1=H.|last2=Lee|first2=Ming-Hau|last3=Lu|first3=Guangming|last4=Kurdahi|first4=F.J.|last5=Bagherzadeh|first5=N.|last6=Filho|first6=E.M. Chaves|date=2000-06-01|title=MorphoSys: an integrated reconfigurable system for data-parallel and computation-intensive applications|url=https://www.researchgate.net/publication/3044209|journal=IEEE Transactions on Computers|volume=49|issue=5|pages=465–481|doi=10.1109/12.859540|issn=0018-9340}}</ref> कुछ नाम है।
आँकडे़ समानांतरवाद भौतिकी, रसायन विज्ञान, जीव विज्ञान, भौतिक विज्ञान से लेकर सिग्नल प्रोसेसिंग तक विभिन्न क्षेत्रों में अपने अनुप्रयोगों को पाता है। विज्ञान आण्विक गतिशीलता जैसे मॉडलों के अनुकरण के लिए आँकडे़ समानांतरता को लागू करता है,<ref>{{Cite journal|last1=Boyer|first1=L. L|last2=Pawley|first2=G. S|date=1988-10-01|title=बड़े पैमाने पर समानांतर कंप्यूटर का उपयोग करके जोड़ीदार बलों के साथ बातचीत करने वाले कणों के समूहों की आणविक गतिशीलता|journal=Journal of Computational Physics|volume=78|issue=2|pages=405–423|doi=10.1016/0021-9991(88)90057-5|bibcode=1988JCoPh..78..405B}}</ref> जीनोम आँकडे़ का अनुक्रम विश्लेषण <ref>{{Cite journal|journal=IEEE Transactions on Parallel and Distributed Systems|volume=9|issue=3|pages=283–294|doi=10.1109/71.674320|year=1998|last1=Yap|first1=T.K.|last2=Frieder|first2=O.|last3=Martino|first3=R.L.|title=जैविक अनुक्रम विश्लेषण में समानांतर संगणना|citeseerx = 10.1.1.30.2819}}</ref> और अन्य भौतिक घटनाएँ। आँकडे़ समानता के लिए सिग्नल प्रोसेसिंग में ड्राइविंग बल वीडियो एन्संकेतावलीिंग, इमेज और ग्राफिक्स प्रोसेसिंग, वायरलेस संचार हैं <ref>{{Cite journal|last1=Singh|first1=H.|last2=Lee|first2=Ming-Hau|last3=Lu|first3=Guangming|last4=Kurdahi|first4=F.J.|last5=Bagherzadeh|first5=N.|last6=Filho|first6=E.M. Chaves|date=2000-06-01|title=MorphoSys: an integrated reconfigurable system for data-parallel and computation-intensive applications|url=https://www.researchgate.net/publication/3044209|journal=IEEE Transactions on Computers|volume=49|issue=5|pages=465–481|doi=10.1109/12.859540|issn=0018-9340}}</ref> कुछ नाम है।


== यह भी देखें ==
== यह भी देखें ==
Line 154: Line 155:
* [[स्केलेबल समानता]]
* [[स्केलेबल समानता]]
* [[थ्रेड स्तर समानता]]
* [[थ्रेड स्तर समानता]]
* [[समानांतर प्रोग्रामिंग मॉडल]]
* [[समानांतर प्रोग्रामिंग मॉडल|समानांतर क्रमादेशन मॉडल]]


== टिप्पणियाँ ==
== टिप्पणियाँ ==

Revision as of 11:59, 11 May 2023

अनुक्रमिक बनाम आँकडे़-समानांतर कार्य निष्पादन

समक्रमिक अभिकलित्र वातावरण में कई संसाधित्र में आँकडे़ समानांतरवाद समानांतर है। यह आँकडे़ को विभिन्न नोड्स में वितरित करने पर केंद्रित है, जो समानांतर में आँकडे़ पर काम करते हैं। समानांतर में प्रत्येक तत्व पर काम करके इसे सरणियों और मैट्रिक्स जैसी नियमित आँकडे़ संरचनाओं पर लागू किया जा सकता है। यह समांतरता के दूसरे रूप के रूप में कार्य समानता के विपरीत है।

'n' तत्वों की एक सरणी पर आँकडे़ समानांतर कार्य को सभी संसाधित्र के बीच समान रूप से विभाजित किया जा सकता है। आइए मान लें कि हम दिए गए सरणी के सभी तत्वों को योग करना चाहते हैं और एक अतिरिक्त संचालन के लिए समय Ta टाइम यूनिट है। अनुक्रमिक निष्पादन के मामले में, प्रक्रिया द्वारा लिया जाने वाला समय n×Ta समय इकाइयां होगा क्योंकि यह एक सरणी के सभी तत्वों का योग करता है। दूसरी ओर, यदि हम इस कार्य को 4 संसाधित्र पर आँकडे़ समानांतर कार्य के रूप में निष्पादित करते हैं तो लगने वाला समय (n/4)×Ta + विलयन उपरिव्यय समय इकाइयों तक कम हो जाएगा। समानांतर निष्पादन के परिणामस्वरूप अनुक्रमिक निष्पादन पर 4 का गति वर्धन होता है। ध्यान देने वाली एक महत्वपूर्ण बात यह है कि आँकडे़ समानांतर क्रमादेशन मॉडल के प्रदर्शन के मूल्यांकन में संदर्भ की अवस्थिति एक महत्वपूर्ण भूमिका निभाती है। आँकडे़ की स्थानीयता क्रमादेश द्वारा निष्पादित मेमोरी एक्सेस के साथ-साथ कैश के आकार पर निर्भर करती है।

इतिहास

सोलोमन मशीन के विकास के साथ 1960 के दशक में आँकडे़ समानता की अवधारणा का दोहन शुरू हुआ।[1] सोलोमन मशीन, जिसे वेक्टर संसाधित्र भी कहा जाता है, बड़े आँकडे़ ऐरे (लगातार समय के चरणों में कई आँकडे़ पर संचालन) पर काम करके गणितीय कार्यों के प्रदर्शन में तेजी लाने के लिए विकसित किया गया था। एक ही निर्देश का उपयोग करके एक ही समय में कई आँकडे़ पर संचालन करके आँकडे़ संचालन की संगामिति (अभिकलित्र विज्ञान) को भी चूषित किया गया। इन संसाधित्र को 'सरणी संसाधित्र' कहा जाता था।[2] 1980 के दशक में, शब्द पेश किया गया था [3] इस क्रमादेशन शैली का वर्णन करने के लिए, जिसका व्यापक रूप से C* जैसी आँकडे़ समानांतर भाषाओं में कनेक्शन मशीनो को क्रमादेश करने के लिए उपयोग किया जाता था। आज, ग्राफ़िक्स प्रोसेसिंग युनिट (जीपीयू) में आँकडे़ समानता का सबसे अच्छा उदाहरण है, जो एक ही निर्देश का उपयोग करके समष्टि और समय में कई आँकडे़ पर संचालन की दोनों तकनीकों का उपयोग करते हैं।

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

विवरण

निर्देशों के एक सेट (SIMD) को निष्पादित करने वाले बहु संसाधित्र प्रणाली में, आँकडे़ समानता तब प्राप्त होती है जब प्रत्येक संसाधित्र अलग-अलग वितरित आँकडे़ पर समान कार्य करता है। कुछ स्थितियों में, एकल निष्पादन थ्रेड सभी आँकडे़ पर संचालन को नियंत्रित करता है। दूसरों में, अलग-अलग थ्रेड संचालन को नियंत्रित करते हैं, लेकिन वे एक ही संकेतावली को निष्पादित करते हैं।

उदाहरण के लिए, आव्यूह गुणन और जोड़ को क्रमिक तरीके से विचार करें जैसा कि उदाहरण में चर्चा की गई है।

उदाहरण

नीचे गुणा और दो आव्यूहों के जोड़ के लिए अनुक्रमिक छद्म संकेतावली है जहां परिणाम मैट्रिक्स में संग्रहीत किया जाता है C. गुणा के लिए छद्म संकेतावली दो आव्यूहों के डॉट गुणनफल की गणना करता है A, B और C परिणाम को निर्गत मैट्रिक्स में संग्रहीत करता है।

यदि निम्नलिखित क्रमादेशों को क्रमिक रूप से क्रियान्वित किया जाता है, तो परिणाम की गणना करने में लगने वाला समय होगा (पंक्ति की लंबाई मानते हुए और दोनों आव्यूहों की स्तंभ लंबाई n हैं) और क्रमशः गुणा और जोड़ के लिए है।

// Matrix multiplication
for (i = 0; i < row_length_A; i++)
{		
    for (k = 0; k < column_length_B; k++)
    {
        sum = 0;
        for (j = 0; j < column_length_A; j++)
        {
            sum += A[i][j] * B[j][k];
        }
        C[i][k] = sum;
    }
}
// Array addition
for (i = 0; i < n; i++) {
    c[i] = a[i] + b[i];
}

हम इसे तेजी से निष्पादित करने के लिए पूर्ववर्ती संकेतावली में आँकडे़ समानता का फायदा उठा सकते हैं क्योंकि अंकगणित परिपथ स्वतंत्र है। OpenMP का उपयोग करके मैट्रिक्स गुणन संकेतावली का समानांतरकरण प्राप्त किया जाता है। एक OpenMP निर्देश, omp समानांतर के लिए संकलक को समानांतर में परिपथ के लिए संकेतावली निष्पादित करने का निर्देश देता है। गुणन के लिए, हम मैट्रिक्स A और B को क्रमशः पंक्तियों और स्तंभों के साथ ब्लॉक में विभाजित कर सकते हैं। यह हमें मैट्रिक्स C में प्रत्येक तत्व की व्यक्तिगत रूप से गणना करने की अनुमति देता है जिससे कार्य समानांतर हो जाता है। उदाहरण के लिए: A[m x n] dot B [n x k] में समाप्त किया जा सकता है के बजाय जब m*k संसाधित्र का उपयोग करके समानांतर में निष्पादित किया जाता है।

मैट्रिक्स गुणन में आँकडे़ समानता
// Matrix multiplication in parallel
#pragma omp parallel for schedule(dynamic,1) collapse(2)
for (i = 0; i < row_length_A; i++){
    for (k = 0; k < column_length_B; k++){
        sum = 0;
        for (j = 0; j < column_length_A; j++){
            sum += A[i][j] * B[j][k];
        }
        C[i][k] = sum;
    }
}

यह उदाहरण से देखा जा सकता है कि बहुत सारे संसाधित्र की आवश्यकता होगी क्योंकि मैट्रिक्स का आकार बढ़ता रहेगा। निष्पादन समय को कम रखना प्राथमिकता है लेकिन जैसे-जैसे मैट्रिक्स का आकार बढ़ता है, हमें ऐसी प्रणाली की जटिलता और उससे जुड़ी लागतों जैसी अन्य बाधाओं का सामना करना पड़ता है। इसलिए, प्रणाली में संसाधित्र की संख्या को सीमित करते हुए, हम अभी भी उसी सिद्धांत को लागू कर सकते हैं और दो मैट्रिक्स के उत्पाद की गणना करने के लिए आँकडे़ को बड़ी मात्रा में विभाजित कर सकते हैं।[4]

आँकडे़ समानांतर कार्यान्वयन में सरणियों को जोड़ने के लिए, दो केंद्रीय प्रसंस्करण इकाइयों (सीपीयू) A और B के साथ एक अधिक मामूली प्रणाली मान लें, सीपीयू A सरणियों के शीर्ष आधे से सभी तत्वों को जोड़ सकता है, जबकि सीपीयू B सभी तत्वों को जोड़ सकता है सरणियों का निचला आधा भाग। चूंकि दो संसाधित्र समानांतर में काम करते हैं, सरणी जोड़ने का काम अकेले एक सीपीयू का उपयोग करके सीरियल में एक ही संचालन करने का आधा समय लेगा।

क्रमादेश नीचे स्यूडोसंकेतावली में व्यक्त किया गया है—जो कुछ मनमाना संचालन लागू करता है, foo, सरणी में प्रत्येक तत्व पर d—आँकडे़ समानता दिखाता है:[nb 1] अगर सीपीयू = A तब

    if CPU = "a" then
    lower_limit := 1
    upper_limit := round(d.length / 2)
else if CPU = "b" then
    lower_limit := round(d.length / 2) + 1
    upper_limit := d.length

for i from lower_limit to upper_limit by 1 do
    foo(d[i])

2 संसाधित्र प्रणाली पर निष्पादित एसपीएमडी प्रणाली में, दोनों सीपीयू संकेतावली को निष्पादित करेंगे।

प्रसंस्करण (कार्य समानांतरता) के विपरीत, आँकडे़ समांतरता आँकडे़ की वितरित (समानांतर) प्रकृति पर जोर देती है। अधिकांश वास्तविक कार्यक्रम कार्य समांतरता और आँकडे़ समांतरता के बीच निरंतरता पर कहीं गिर जाते हैं।

समांतरता के लिए कदम

अनुक्रमिक कार्यक्रम को समानांतर करने की प्रक्रिया को चार असतत चरणों में तोड़ा जा सकता है।[5]

प्रकार विवरण
अपघटन कार्यक्रम को कार्यों में विभाजित किया जाता है जो सहमति की सबसे छोटी कारनामिक इकाई है।
समनुदेशन प्रक्रियाओं को कार्य सौंपे जाते हैं।
वाद्यवृंदन डेटा अभिगम, संचार, और प्रक्रियाओं का समन्वयन।
प्रतिचित्रिण प्रक्रियाओं को प्रोसेसर से जोड़ा जाता है।


आँकडे़ समानता बनाम कार्य समानता

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


आँकडे़ समानता बनाम मॉडल समानता

Data parallelism Model parallelism
Same model is used for every thread but the data given to each of them is divided and shared. Same data is used for every thread, and model is split among threads.
It is fast for small networks but very slow for large networks since large amounts of data needs to be transferred between processors all at once. It is slow for small networks and fast for large networks.
Data parallelism is ideally used in array and matrix computations and convolutional neural networks Model parallelism finds its applications in deep learning

[6]


मिश्रित आँकडे़ और कार्य समानता

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

  1. मिश्रित आँकडे़ और कार्य समानता वैश्विक जलवायु मॉडलिंग में अनुप्रयोगों को ढूंढती है। बड़े आँकडे़ समानांतर संगणनाएं पृथ्वी के वायुमंडल और महासागरों का प्रतिनिधित्व करने वाले आँकडे़ के ग्रिड बनाकर की जाती हैं और भौतिक प्रक्रियाओं के कार्य और मॉडल को अनुकरण करने के लिए कार्य समानांतरता को नियोजित किया जाता है।
  2. टाइमिंग आधारित सर्किट सिमुलेशन में। आँकडे़ को विभिन्न उप-सर्किटों के बीच विभाजित किया जाता है और कार्यों से ऑर्केस्ट्रेशन के साथ समानता हासिल की जाती है।

आँकडे़ समानांतर क्रमादेशन वातावरण

विभिन्न प्रकार के आँकडे़ समानांतर क्रमादेशन वातावरण आज उपलब्ध हैं, जिनमें से सबसे व्यापक रूप से उपयोग किए जाते हैं:

  1. संदेश पासिंग इंटरफ़ेस: यह समानांतर कंप्यूटरों के लिए एक क्रॉस-प्लेटफ़ॉर्म संदेश पासिंग क्रमादेशन इंटरफ़ेस है। यह उपयोगकर्ताओं को सी, सी ++ और फोरट्रान में पोर्टेबल संदेश पासिंग क्रमादेश लिखने की अनुमति देने के लिए पुस्तकालय कार्यों के शब्दार्थ को परिभाषित करता है।
  2. ओपन मल्टी प्रोसेसिंग[8] (ओपन एमपी): यह एक एप्लिकेशन क्रमादेशन इंटरफेस (एपीआई) है जो बहु संसाधित्र प्रणाली के कई प्लेटफॉर्म पर साझा मेमोरी क्रमादेशन मॉडल का समर्थन करता है।
  3. CUDA और OpenACC: CUDA और OpenACC (क्रमशः) समक्रमिक अभिकलित्र एपीआई प्लेटफॉर्म हैं जो एक सॉफ्टवेयर इंजीनियर को सामान्य प्रयोजन प्रसंस्करण के लिए GPU की कम्प्यूटेशनल इकाइयों का उपयोग करने की अनुमति देने के लिए डिज़ाइन किए गए हैं।
  4. थ्रेडिंग बिल्डिंग ब्लॉक्स और राफ्टलिब: दोनों ओपन सोर्स क्रमादेशन वातावरण जो विषम संसाधनों में सी / सी ++ वातावरण में मिश्रित आँकडे़ / कार्य समानता को सक्षम करते हैं।

अनुप्रयोग

आँकडे़ समानांतरवाद भौतिकी, रसायन विज्ञान, जीव विज्ञान, भौतिक विज्ञान से लेकर सिग्नल प्रोसेसिंग तक विभिन्न क्षेत्रों में अपने अनुप्रयोगों को पाता है। विज्ञान आण्विक गतिशीलता जैसे मॉडलों के अनुकरण के लिए आँकडे़ समानांतरता को लागू करता है,[9] जीनोम आँकडे़ का अनुक्रम विश्लेषण [10] और अन्य भौतिक घटनाएँ। आँकडे़ समानता के लिए सिग्नल प्रोसेसिंग में ड्राइविंग बल वीडियो एन्संकेतावलीिंग, इमेज और ग्राफिक्स प्रोसेसिंग, वायरलेस संचार हैं [11] कुछ नाम है।

यह भी देखें

टिप्पणियाँ

  1. Some input data (e.g. when d.length evaluates to 1 and round rounds towards zero [this is just an example, there are no requirements on what type of rounding is used]) will lead to lower_limit being greater than upper_limit, it's assumed that the loop will exit immediately (i.e. zero iterations will occur) when this happens.


संदर्भ

  1. "The Solomon Computer".
  2. "SIMD/Vector/GPU" (PDF). Retrieved 2016-09-07.
  3. Hillis, W. Daniel and Steele, Guy L., Data Parallel Algorithms Communications of the ACMDecember 1986
  4. Barney, Blaise. "समानांतर कंप्यूटिंग का परिचय". computing.llnl.gov. Archived from the original on 2013-06-10. Retrieved 2016-09-07.
  5. Solihin, Yan (2016). समानांतर वास्तुकला के मूल तत्व. Boca Raton, FL: CRC Press. ISBN 978-1-4822-1118-4.
  6. "How to Parallelize Deep Learning on GPUs Part 2/2: Model Parallelism". Tim Dettmers. 2014-11-09. Retrieved 2016-09-13.
  7. "The Netlib" (PDF).
  8. "ोपंम्प.ऑर्ग". openmp.org. Archived from the original on 2016-09-05. Retrieved 2016-09-07.
  9. Boyer, L. L; Pawley, G. S (1988-10-01). "बड़े पैमाने पर समानांतर कंप्यूटर का उपयोग करके जोड़ीदार बलों के साथ बातचीत करने वाले कणों के समूहों की आणविक गतिशीलता". Journal of Computational Physics. 78 (2): 405–423. Bibcode:1988JCoPh..78..405B. doi:10.1016/0021-9991(88)90057-5.
  10. Yap, T.K.; Frieder, O.; Martino, R.L. (1998). "जैविक अनुक्रम विश्लेषण में समानांतर संगणना". IEEE Transactions on Parallel and Distributed Systems. 9 (3): 283–294. CiteSeerX 10.1.1.30.2819. doi:10.1109/71.674320.
  11. Singh, H.; Lee, Ming-Hau; Lu, Guangming; Kurdahi, F.J.; Bagherzadeh, N.; Filho, E.M. Chaves (2000-06-01). "MorphoSys: an integrated reconfigurable system for data-parallel and computation-intensive applications". IEEE Transactions on Computers. 49 (5): 465–481. doi:10.1109/12.859540. ISSN 0018-9340.