आव्यूह गुणन कलनविधि (एल्गोरिथ्म): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{short description|Algorithm to multiply matrices}}
{{short description|Algorithm to multiply matrices}}
[[मैट्रिक्स गुणन|आव्यूह गुणन]] कई संख्यात्मक कलनविधि में एक ऐसा केंद्रीय संक्रिया है, इस प्रकार कलनविधि में आव्यूह गुणन को कुशल बनाने में बहुत काम किया गया है। इस प्रकार अभिकलनात्मक समस्याओं में आव्यूह गुणन के अनुप्रयोग [[वैज्ञानिक कंप्यूटिंग|वैज्ञानिक अभिकलन]] और पैटर्न रिकॉग्नाइजेसन सहित कई क्षेत्रों में संभवतः प्रतीत होने वाली असंबंधित समस्याओं के रूप में पाए जाते हैं और ग्राफ के माध्यम से पथों की गिनती होती है।<ref name="skiena"/> [[समानांतर कंप्यूटिंग|समानांतर अभिकलन]] और वितरित अभिकलन प्रणाली सहित विभिन्न प्रकार के हार्डवेयर पर आव्यूह को गुणा करने के लिए कई भिन्न -भिन्न कलनविधि डिज़ाइन किए गए हैं, जहां अभिकलनात्मक कार्य कई प्रोसेसर पर संभवतः एक नेटवर्क के ऊपर फैला हुआ है।
[[मैट्रिक्स गुणन|आव्यूह गुणन]] कई संख्यात्मक कलनविधि में एक ऐसा केंद्रीय संक्रिया है, कलनविधि में आव्यूह गुणन को कुशल बनाने में बहुत काम किया गया है। इस प्रकार अभिकलनात्मक समस्याओं में आव्यूह गुणन के अनुप्रयोग [[वैज्ञानिक कंप्यूटिंग|वैज्ञानिक अभिकलन]] और पैटर्न रिकॉग्नाइजेसन सहित कई क्षेत्रों में संभवतः प्रतीत होने वाली असंबंधित समस्याओं के रूप में पाए जाते हैं और ग्राफ के माध्यम से पथों की गिनती होती है।<ref name="skiena"/> [[समानांतर कंप्यूटिंग|समानांतर अभिकलन]] और वितरित अभिकलन प्रणाली सहित विभिन्न प्रकार के हार्डवेयर पर आव्यूह को गुणा करने के लिए कई भिन्न -भिन्न कलनविधि डिज़ाइन किए गए हैं, जहां अभिकलनात्मक कार्य कई प्रोसेसर पर संभवतः एक नेटवर्क के ऊपर फैला हुआ है।


आव्यूह गुणन की गणितीय परिभाषा को सीधे प्रयुक्त करने से एक कलनविधि मिलता है, जिसके {{math|''n''<sup>3</sup>}} क्रम पर [[एल्गोरिदम का विश्लेषण|कलनविधि का विश्लेषण]] होता है और इस प्रकार दो को गुणा करने के लिए [[फ़ील्ड (गणित)|(गणित क्षेत्र)]] संक्रिया {{math|''n'' × ''n''}} उस क्षेत्र पर आव्यूह ({{math|Θ(''n''<sup>3</sup>)}} बड़े O अंकन में होता है। 1960 के दशक में स्ट्रैसेन कलनविधि के बाद से आव्यूह को गुणा करने के लिए आवश्यक समय पर अच्छे स्पर्शोन्मुख सीमाएं ज्ञात हैं, लेकिन ऑप्टीमल समय अर्थात [[मैट्रिक्स गुणन की कम्प्यूटेशनल जटिलता|आव्यूह गुणन की अभिकलनात्मक जटिलता]] अज्ञात बनी हुई है। और इस प्रकार अक्टूबर 2022 तक आव्यूह गुणन कलनविधि की समय जटिलता पर सबसे अच्छी घोषणा {{math|O(''n''<sup>2.37188</sup>)}} की गई थी, जिसे डुआन, वू और झोउ द्वारा दिया गया था<ref name="dwz22">
आव्यूह गुणन की गणितीय परिभाषा को सीधे प्रयुक्त करने से एक कलनविधि मिलता है, जिसके {{math|''n''<sup>3</sup>}} क्रम पर [[एल्गोरिदम का विश्लेषण|कलनविधि का विश्लेषण]] होता है और इस प्रकार दो को गुणा करने के लिए [[फ़ील्ड (गणित)|(गणित क्षेत्र)]] संक्रिया {{math|''n'' × ''n''}} उस क्षेत्र पर आव्यूह ({{math|Θ(''n''<sup>3</sup>)}} बड़े O अंकन में होता है। 1960 के दशक में स्ट्रैसेन कलनविधि के बाद से आव्यूह को गुणा करने के लिए आवश्यक समय पर अच्छे स्पर्शोन्मुख सीमाएं ज्ञात हैं, लेकिन ऑप्टीमल समय अर्थात [[मैट्रिक्स गुणन की कम्प्यूटेशनल जटिलता|आव्यूह गुणन की अभिकलनात्मक जटिलता]] अज्ञात बनी हुई है। और इस प्रकार अक्टूबर 2022 तक आव्यूह गुणन कलनविधि की समय जटिलता पर सबसे अच्छी घोषणा {{math|O(''n''<sup>2.37188</sup>)}} की गई थी, जिसे डुआन, वू और झोउ द्वारा दिया गया था<ref name="dwz22">
Line 173: Line 173:


===साझा-मेमोरी समानता===
===साझा-मेमोरी समानता===
#डिवाइड और क्न्क्वेर कलनविधि डिवाइड और क्न्क्वेर कलनविधि पहले स्केच किया गया [[साझा-मेमोरी मल्टीप्रोसेसर]] के लिए दो विधीयो से [[समानांतर एल्गोरिदम|समानांतर]] कलनविधि हो सकता है। ये इस तथ्य पर आधारित हैं कि आठ रिकर्सिव आव्यूह गुणन में
#डिवाइड और क्न्क्वेर कलनविधि डिवाइड और क्न्क्वेर कलनविधि पहले स्केच किया गया [[साझा-मेमोरी मल्टीप्रोसेसर]] के लिए दो विधीयो से [[समानांतर एल्गोरिदम|समानांतर]] कलनविधि हो सकता है। ये इस तथ्य पर आधारित हैं कि आठ रिकर्सिव आव्यूह गुणन में इस प्रकार है


:<math>\begin{pmatrix}
:<math>\begin{pmatrix}
Line 180: Line 180:
\end{pmatrix}
\end{pmatrix}
</math>
</math>
चार योगों की तरह, एक-दूसरे से स्वतंत्र रूप से निष्पादित किया जा सकता है (चूंकि कलनविधि को योग करने से पहले गुणाओं को जोड़ने की आवश्यकता होती है)। समस्या की पूर्ण समानता का उपयोग करते हुए, एक कलनविधि प्राप्त होता है जिसे फोर्क-जॉइन मॉडल | फोर्क-जॉइन स्टाइल [[ छद्मकोड |छद्मकोड]] में व्यक्त किया जा सकता है:<ref name="cilk"/>
चार योगों की तरह, एक-दूसरे से स्वतंत्र रूप से निष्पादित किया जा सकता है, चूंकि कलनविधि को योग करने से पहले गुणन को जोड़ने की आवश्यकता होती है। इस प्रकार समस्या की पूर्ण समानता का उपयोग करते हुए कलनविधि प्राप्त होता है जिसे फोर्क-जॉइन मॉडल [[ छद्मकोड |पीसूडोकोड]] में व्यक्त किया जा सकता है:<ref name="cilk"/>


{{framebox|blue}}
{{framebox|blue}}
Line 218: Line 218:
{{frame-footer}}
{{frame-footer}}


यहां, फोर्क एक कीवर्ड है जो संकेत देता है कि गणना को बाकी फलन कॉल के साथ समानांतर में चलाया जा सकता है, जबकि जॉइन पहले से फोर्क की गई सभी गणनाओं के पूरा होने की प्रतीक्षा करता है। {{math|partition}} केवल सूचक हेरफेर द्वारा अपना लक्ष्य प्राप्त करता है।
यहां, फोर्क एक कीवर्ड है जो संकेत देता है कि गणना को शेष फलन कॉल के साथ समानांतर में चलाया जा सकता है, जबकि जॉइन पहले से फोर्क की गई सभी गणनाओं के पूरा होने की प्रतीक्षा करता है। विभाजन केवल सूचक हेरफेर द्वारा अपना लक्ष्य प्राप्त करता है।


इस कलनविधि की एक महत्वपूर्ण पथ लंबाई है {{math|Θ(log<sup>2</sup> ''n'')}} चरण, जिसका अर्थ है कि अनंत संख्या में प्रोसेसर वाली एक आदर्श मशीन पर इतना समय लगता है; इसलिए, इसकी अधिकतम संभव गति है {{math|Θ(''n''<sup>3</sup>/log<sup>2</sup> ''n'')}} किसी भी वास्तविक कंप्यूटर पर। अस्थायी आव्यूह से डेटा ले जाने में निहित संचार लागत के कारण कलनविधि व्यावहारिक नहीं है {{mvar|T}}, लेकिन एक अधिक व्यावहारिक संस्करण प्राप्त होता है {{math|Θ(''n''<sup>2</sup>)}} अस्थायी आव्यूह का उपयोग किए बिना स्पीडअप।<ref name="cilk">{{cite thesis |type=Ph.D. |last=Randall |first=Keith H. |title=Cilk: Efficient Multithreaded Computing |publisher=Massachusetts Institute of Technology |year=1998 |pages=54–57 |url=http://supertech.csail.mit.edu/papers/randall-phdthesis.pdf |hdl=1721.1/47519}}</ref>
इस कलनविधि में {{math|Θ(log<sup>2</sup> ''n'')}} चरण एक महत्वपूर्ण पथ लंबाई है, जिसका अर्थ है कि अनंत संख्या में प्रोसेसर वाली एक आदर्श मशीन पर इतना समय लगता है; इसलिए, किसी भी वास्तविक कंप्यूटर पर इसकी अधिकतम संभव गति {{math|Θ(''n''<sup>3</sup>/log<sup>2</sup> ''n'')}} है, अस्थायी आव्यूह {{mvar|T}} से डेटा ले जाने में निहित संचार लागत के कारण कलनविधि व्यावहारिक नहीं है, लेकिन एक अधिक व्यावहारिक संस्करण अस्थायी आव्यूह का उपयोग किए बिना {{math|Θ(''n''<sup>2</sup>)}} स्पीडअप प्राप्त करता है।<ref name="cilk">{{cite thesis |type=Ph.D. |last=Randall |first=Keith H. |title=Cilk: Efficient Multithreaded Computing |publisher=Massachusetts Institute of Technology |year=1998 |pages=54–57 |url=http://supertech.csail.mit.edu/papers/randall-phdthesis.pdf |hdl=1721.1/47519}}</ref>


[[File:Block matrix multiplication.svg|thumb|ब्लॉक आव्यूह गुणन. 2D कलनविधि में, प्रत्येक प्रोसेसर एक सबमैट्रिक्स के लिए उत्तरदायी होता है {{mvar|C}}. 3D कलनविधि में, सबमैट्रिक्स की प्रत्येक जोड़ी {{mvar|A}} और {{mvar|B}} जिसे गुणा किया जाता है उसे एक प्रोसेसर को सौंपा जाता है।]]
[[File:Block matrix multiplication.svg|thumb|ब्लॉक आव्यूह गुणन. 2D कलनविधि में, प्रत्येक प्रोसेसर एक सबआव्यूह के लिए उत्तरदायी होता है {{mvar|C}}. 3D कलनविधि में, सबआव्यूह की प्रत्येक जोड़ी {{mvar|A}} और {{mvar|B}} जिसे गुणा किया जाता है उसे एक प्रोसेसर को सौंपा जाता है।]]


===संचार अवॉयड और डिस्ट्रिब्यूटेड कलन विधि===
===संचार अवॉयड और डिस्ट्रिब्यूटेड कलन विधि===
आधुनिक आर्किटेक्चर में हाइरार्की मेमोरी के साथ इनपुट आव्यूह तत्वों को लोड करने और संग्रहीत करने की लागत अंकगणित की लागत पर प्रभाव डालती है और इस प्रकार एक ही मशीन पर यह रैम और कैशे के बीच स्थानांतरित किए गए डेटा की मात्रा के रूप में होती है, जबकि एक डिस्ट्रिब्यूटेड मेमोरी मल्टी-नोड मशीन पर यह नोड्स के बीच स्थानांतरित की गई राशि के रूप में होती है और किसी भी स्थिति में इसे संचार बैंडविड्थ कहा जाता है। तीन नेस्टेड लूप का उपयोग करने वाला अनुभवहीन कलनविधि {{math|Ω(''n''<sup>3</sup>)}} संचार बैंडविड्थ.का उपयोग करता है  
आधुनिक आर्किटेक्चर में हाइरार्की मेमोरी के साथ इनपुट आव्यूह तत्वों को लोड करने और संग्रहीत करने की लागत अंकगणित की लागत पर प्रभाव डालती है और इस प्रकार एक ही मशीन पर यह रैम और कैशे के बीच स्थानांतरित किए गए डेटा की मात्रा के रूप में होती है, जबकि एक डिस्ट्रिब्यूटेड मेमोरी मल्टी-नोड मशीन पर यह नोड्स के बीच स्थानांतरित की गई राशि के रूप में होती है और किसी भी स्थिति में इसे संचार बैंडविड्थ कहा जाता है। तीन नेस्टेड लूप का उपयोग करने वाला अनुभवहीन कलनविधि {{math|Ω(''n''<sup>3</sup>)}} संचार बैंडविड्थ.का उपयोग करता है  


कैनन का कलन विधि , जिसे 2D कलनविधि के रूप में भी जाना जाता है, एक [[संचार से बचने वाला एल्गोरिदम|संचार से अवॉयड]] कलनविधि जो प्रत्येक इनपुट आव्यूह को एक ब्लॉक आव्यूह में विभाजित करता है जिसके तत्व के आकार {{math|{{sqrt|''M''/3}}}} द्वारा {{math|{{sqrt|''M''/3}}}} के रूप में सबमैट्रिक्स होते हैं जहाँ {{math|''M''}} फ़ास्ट ी से मेमोरी का आकार है।<ref>{{cite thesis |first=Lynn Elliot |last=Cannon |title=कलमन फ़िल्टर एल्गोरिथम को लागू करने के लिए एक सेलुलर कंप्यूटर|date=14 July 1969 |type=Ph.D. |publisher=Montana State University |url=https://dl.acm.org/doi/abs/10.5555/905686 }}</ref> इसके बाद अनुभवहीन कलनविधि का उपयोग ब्लॉक मैट्रिसेस पर किया जाता है, जो पूरी तरह से फ़ास्ट मेमोरी में सबमैट्रिसेस के गुणन की गणना करता है। इससे संचार बैंडविड्थ को {{math|''O''(''n''<sup>3</sup>/{{sqrt|''M''}})}} तक कम कर देता है, जो असिम्प्टोटिकालीय रूप से ऑप्टीमल है {{math|Ω(''n''<sup>3</sup>)}} है।<ref>{{cite journal|last1=Hong|first1=J. W.|first2=H. T. |last2=Kung|title=I/O complexity: The red-blue pebble game|journal=STOC '81: Proceedings of the Thirteenth Annual ACM Symposium on Theory of Computing|year=1981|pages=326–333|url=https://apps.dtic.mil/dtic/tr/fulltext/u2/a104739.pdf|archive-url=https://web.archive.org/web/20191215182754/https://apps.dtic.mil/dtic/tr/fulltext/u2/a104739.pdf|url-status=live|archive-date=December 15, 2019 |doi=10.1145/800076.802486|s2cid=8410593 }}</ref><ref name=irony>{{cite journal|last1=Irony|first1=Dror|first2=Sivan |last2=Toledo |first3=Alexander |last3=Tiskin |title=वितरित-मेमोरी मैट्रिक्स गुणन के लिए संचार निचली सीमाएं|journal=J. Parallel Distrib. Comput.|date=September 2004|volume=64|issue=9|pages=1017–26|doi=10.1016/j.jpdc.2004.03.021|citeseerx=10.1.1.20.7034}}</ref>  
कैनन का कलन विधि , जिसे 2D कलनविधि के रूप में भी जाना जाता है, एक [[संचार से बचने वाला एल्गोरिदम|संचार से अवॉयड]] कलनविधि जो प्रत्येक इनपुट आव्यूह को एक ब्लॉक आव्यूह में विभाजित करता है जिसके तत्व के आकार {{math|{{sqrt|''M''/3}}}} द्वारा {{math|{{sqrt|''M''/3}}}} के रूप में सबआव्यूह होते हैं जहाँ {{math|''M''}} फ़ास्ट ी से मेमोरी का आकार है।<ref>{{cite thesis |first=Lynn Elliot |last=Cannon |title=कलमन फ़िल्टर एल्गोरिथम को लागू करने के लिए एक सेलुलर कंप्यूटर|date=14 July 1969 |type=Ph.D. |publisher=Montana State University |url=https://dl.acm.org/doi/abs/10.5555/905686 }}</ref> इसके बाद अनुभवहीन कलनविधि का उपयोग ब्लॉक मैट्रिसेस पर किया जाता है, जो पूरी तरह से फ़ास्ट मेमोरी में सबमैट्रिसेस के गुणन की गणना करता है। इससे संचार बैंडविड्थ को {{math|''O''(''n''<sup>3</sup>/{{sqrt|''M''}})}} तक कम कर देता है, जो असिम्प्टोटिकालीय रूप से ऑप्टीमल है {{math|Ω(''n''<sup>3</sup>)}} है।<ref>{{cite journal|last1=Hong|first1=J. W.|first2=H. T. |last2=Kung|title=I/O complexity: The red-blue pebble game|journal=STOC '81: Proceedings of the Thirteenth Annual ACM Symposium on Theory of Computing|year=1981|pages=326–333|url=https://apps.dtic.mil/dtic/tr/fulltext/u2/a104739.pdf|archive-url=https://web.archive.org/web/20191215182754/https://apps.dtic.mil/dtic/tr/fulltext/u2/a104739.pdf|url-status=live|archive-date=December 15, 2019 |doi=10.1145/800076.802486|s2cid=8410593 }}</ref><ref name=irony>{{cite journal|last1=Irony|first1=Dror|first2=Sivan |last2=Toledo |first3=Alexander |last3=Tiskin |title=वितरित-मेमोरी मैट्रिक्स गुणन के लिए संचार निचली सीमाएं|journal=J. Parallel Distrib. Comput.|date=September 2004|volume=64|issue=9|pages=1017–26|doi=10.1016/j.jpdc.2004.03.021|citeseerx=10.1.1.20.7034}}</ref>  


वितरित सेटिंग में, {{math|{{sqrt|''p''}}}} 2D मेशेस द्वारा {{math|{{sqrt|''p''}}}} में व्यवस्थित P प्रोसेसरों में परिणाम का एक सबमैट्रिक्स प्रत्येक प्रोसेसर को सौंपा जाता है और प्रत्येक {{math|''O''(''n''<sup>2</sup>/{{sqrt|''p''}})}} शब्द प्रोसेसर ट्रांसमिटिंग के साथ गुणन की गणना की जा सकती है जो कि असम्बद्ध रूप से ऑप्टीमल है, यह मानते हुए कि प्रत्येक नोड न्यूनतम {{math|''O''(''n''<sup>2</sup>/''p'')}} तत्वसंग्रहीत करता है.<ref name="irony" />इसे 3D कलनविधि द्वारा अच्छे से बनाया जा सकता है, जो प्रोसेसर को 3D क्यूब मेशेस में व्यवस्थित करता है और इस प्रकार दो इनपुट सबमैट्रिसेस के प्रत्येक गुणन को एक ही प्रोसेसर को निर्दिष्ट करता है। फिर प्रत्येक पंक्ति पर कमी करके परिणाम सबमैट्रिस के रूप में उत्पन्न किए जाते हैं।<ref name="Agarwal">{{cite journal|last1=Agarwal|first1=R.C.|first2=S. M. |last2=Balle |first3=F. G. |last3=Gustavson |first4=M. |last4=Joshi |first5=P. |last5=Palkar |title=समानांतर मैट्रिक्स गुणन के लिए एक त्रि-आयामी दृष्टिकोण|journal=IBM J. Res. Dev.|date=September 1995|volume=39|issue=5|pages=575–582|doi=10.1147/rd.395.0575|citeseerx=10.1.1.44.3404}}</ref> यह कलनविधि प्रति प्रोसेसर {{math|''O''(''n''<sup>2</sup>/''p''<sup>2/3</sup>)}} शब्दों को संचारित करता है जो कि असम्बद्ध रूप से ऑप्टीमल है।<ref name="irony" />चूंकि, इसके लिए प्रत्येक इनपुट आव्यूह तत्व {{math|''p''<sup>1/3</sup>}} बार दोहराने की आवश्यकता होती है और इसलिए इनपुट को संग्रहीत करने के लिए आवश्यकता से अधिक {{math|''p''<sup>1/3</sup>}} मेमोरी की आवश्यकता होती है। इस कलनविधि के रनटाइम को कम करने के लिए स्ट्रैसेन के साथ जोड़ा जा सकता है।<ref name="Agarwal" /> 2.5D कलनविधि मेमोरी उपयोग और संचार बैंडविड्थ के बीच एक निरंतर ट्रेडऑफ़ प्रदान करता है।<ref>{{cite conference|last1=Solomonik|first1=Edgar|first2=James |last2=Demmel|title=Communication-optimal parallel 2.5D matrix multiplication and LU factorization algorithms|book-title=Proceedings of the 17th International Conference on Parallel Processing|year=2011|volume=Part II|pages=90–109 |doi=10.1007/978-3-642-23397-5_10 |isbn=978-3-642-23397-5 |url=https://solomonik.cs.illinois.edu/talks/europar-sep-2011.pdf}}</ref> [[MapReduce|मैप रेडूस]] जैसे आधुनिक वितरित अभिकलन वातावरण पर, विशेष गुणन कलनविधि विकसित किए गए हैं।<ref>{{cite web |last1=Bosagh Zadeh|first1=Reza|last2=Carlsson|first2=Gunnar|title=MapReduce का उपयोग करके आयाम स्वतंत्र मैट्रिक्स स्क्वायर|year=2013|arxiv=1304.1467|bibcode=2013arXiv1304.1467B|url=https://stanford.edu/~rezab/papers/dimsum.pdf|access-date=12 July 2014}}</ref>
वितरित सेटिंग में, {{math|{{sqrt|''p''}}}} 2D मेशेस द्वारा {{math|{{sqrt|''p''}}}} में व्यवस्थित P प्रोसेसरों में परिणाम का एक सबआव्यूह प्रत्येक प्रोसेसर को सौंपा जाता है और प्रत्येक {{math|''O''(''n''<sup>2</sup>/{{sqrt|''p''}})}} शब्द प्रोसेसर ट्रांसमिटिंग के साथ गुणन की गणना की जा सकती है जो कि असम्बद्ध रूप से ऑप्टीमल है, यह मानते हुए कि प्रत्येक नोड न्यूनतम {{math|''O''(''n''<sup>2</sup>/''p'')}} तत्वसंग्रहीत करता है.<ref name="irony" />इसे 3D कलनविधि द्वारा अच्छे से बनाया जा सकता है, जो प्रोसेसर को 3D क्यूब मेशेस में व्यवस्थित करता है और इस प्रकार दो इनपुट सबमैट्रिसेस के प्रत्येक गुणन को एक ही प्रोसेसर को निर्दिष्ट करता है। फिर प्रत्येक पंक्ति पर कमी करके परिणाम सबमैट्रिस के रूप में उत्पन्न किए जाते हैं।<ref name="Agarwal">{{cite journal|last1=Agarwal|first1=R.C.|first2=S. M. |last2=Balle |first3=F. G. |last3=Gustavson |first4=M. |last4=Joshi |first5=P. |last5=Palkar |title=समानांतर मैट्रिक्स गुणन के लिए एक त्रि-आयामी दृष्टिकोण|journal=IBM J. Res. Dev.|date=September 1995|volume=39|issue=5|pages=575–582|doi=10.1147/rd.395.0575|citeseerx=10.1.1.44.3404}}</ref> यह कलनविधि प्रति प्रोसेसर {{math|''O''(''n''<sup>2</sup>/''p''<sup>2/3</sup>)}} शब्दों को संचारित करता है जो कि असम्बद्ध रूप से ऑप्टीमल है।<ref name="irony" />चूंकि, इसके लिए प्रत्येक इनपुट आव्यूह तत्व {{math|''p''<sup>1/3</sup>}} बार दोहराने की आवश्यकता होती है और इसलिए इनपुट को संग्रहीत करने के लिए आवश्यकता से अधिक {{math|''p''<sup>1/3</sup>}} मेमोरी की आवश्यकता होती है। इस कलनविधि के रनटाइम को कम करने के लिए स्ट्रैसेन के साथ जोड़ा जा सकता है।<ref name="Agarwal" /> 2.5D कलनविधि मेमोरी उपयोग और संचार बैंडविड्थ के बीच एक निरंतर ट्रेडऑफ़ प्रदान करता है।<ref>{{cite conference|last1=Solomonik|first1=Edgar|first2=James |last2=Demmel|title=Communication-optimal parallel 2.5D matrix multiplication and LU factorization algorithms|book-title=Proceedings of the 17th International Conference on Parallel Processing|year=2011|volume=Part II|pages=90–109 |doi=10.1007/978-3-642-23397-5_10 |isbn=978-3-642-23397-5 |url=https://solomonik.cs.illinois.edu/talks/europar-sep-2011.pdf}}</ref> [[MapReduce|मैप रेडूस]] जैसे आधुनिक वितरित अभिकलन वातावरण पर, विशेष गुणन कलनविधि विकसित किए गए हैं।<ref>{{cite web |last1=Bosagh Zadeh|first1=Reza|last2=Carlsson|first2=Gunnar|title=MapReduce का उपयोग करके आयाम स्वतंत्र मैट्रिक्स स्क्वायर|year=2013|arxiv=1304.1467|bibcode=2013arXiv1304.1467B|url=https://stanford.edu/~rezab/papers/dimsum.pdf|access-date=12 July 2014}}</ref>
===मेशेस कलन विधि ===
===मेशेस कलन विधि ===
[[File:Matrix multiplication on a cross-wire two-dimensional array.png|thumb|240px|क्रॉस-वायर्ड मेशेस पर दो n×n आव्यूह के लिए आव्यूह गुणन 2n-1 चरणों में पूरा होता है।]][[ जाल नेटवर्किंग | मेशेस नेटवर्किंग]] पर गुणन के लिए विभिन्न प्रकार के कलनविधि हैं। 2D कैनन के कलनविधि का उपयोग करके एक मानक द्वि-आयामी मेशेस पर दो n×n के गुणन के लिए कोई 3n-2 चरणों में गुणन को पूरा कर सकता है, चूंकि बार-बार की गणना के लिए यह संख्या आधी हो जाती है।<ref>{{cite journal | last1 = Bae | first1 = S.E. | last2 = Shinn | first2 = T.-W. | last3 = Takaoka | first3 = T. | year = 2014 | title = जाल सरणी पर मैट्रिक्स गुणन के लिए एक तेज़ समानांतर एल्गोरिदम| url = https://www.sciencedirect.com/science/article/pii/S1877050914003858/pdf  | journal = Procedia Computer Science | volume = 29 | pages = 2230–40 | doi = 10.1016/j.procs.2014.05.208 | doi-access = free }}</ref> इस प्रकार मानक सरणी अक्षम है क्योंकि दो आव्यूह से डेटा एक साथ नहीं आता है और इसे शून्य के साथ पैडेड होना चाहिए।
[[File:Matrix multiplication on a cross-wire two-dimensional array.png|thumb|240px|क्रॉस-वायर्ड मेशेस पर दो n×n आव्यूह के लिए आव्यूह गुणन 2n-1 चरणों में पूरा होता है।]][[ जाल नेटवर्किंग | मेशेस नेटवर्किंग]] पर गुणन के लिए विभिन्न प्रकार के कलनविधि हैं। 2D कैनन के कलनविधि का उपयोग करके एक मानक द्वि-आयामी मेशेस पर दो n×n के गुणन के लिए कोई 3n-2 चरणों में गुणन को पूरा कर सकता है, चूंकि बार-बार की गणना के लिए यह संख्या आधी हो जाती है।<ref>{{cite journal | last1 = Bae | first1 = S.E. | last2 = Shinn | first2 = T.-W. | last3 = Takaoka | first3 = T. | year = 2014 | title = जाल सरणी पर मैट्रिक्स गुणन के लिए एक तेज़ समानांतर एल्गोरिदम| url = https://www.sciencedirect.com/science/article/pii/S1877050914003858/pdf  | journal = Procedia Computer Science | volume = 29 | pages = 2230–40 | doi = 10.1016/j.procs.2014.05.208 | doi-access = free }}</ref> इस प्रकार मानक सरणी अक्षम है क्योंकि दो आव्यूह से डेटा एक साथ नहीं आता है और इसे शून्य के साथ पैडेड होना चाहिए।

Revision as of 00:42, 9 August 2023

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

आव्यूह गुणन की गणितीय परिभाषा को सीधे प्रयुक्त करने से एक कलनविधि मिलता है, जिसके n3 क्रम पर कलनविधि का विश्लेषण होता है और इस प्रकार दो को गुणा करने के लिए (गणित क्षेत्र) संक्रिया n × n उस क्षेत्र पर आव्यूह (Θ(n3) बड़े O अंकन में होता है। 1960 के दशक में स्ट्रैसेन कलनविधि के बाद से आव्यूह को गुणा करने के लिए आवश्यक समय पर अच्छे स्पर्शोन्मुख सीमाएं ज्ञात हैं, लेकिन ऑप्टीमल समय अर्थात आव्यूह गुणन की अभिकलनात्मक जटिलता अज्ञात बनी हुई है। और इस प्रकार अक्टूबर 2022 तक आव्यूह गुणन कलनविधि की समय जटिलता पर सबसे अच्छी घोषणा O(n2.37188) की गई थी, जिसे डुआन, वू और झोउ द्वारा दिया गया था[2] एक प्रीप्रिंट में घोषणा की गई है। इससे सीमा में सुधार होता है O(n2.3728596) समय, जोश अल्मन और वर्जीनिया वासिलिव्स्का विलियम्स द्वारा दिया गया।[3][4] चूंकि, यह कलनविधि बड़े स्थिरांक के कारण एक गैलेक्टिक कलनविधि के रूप में होती है और इसे व्यावहारिक रूप से अनुभव नहीं किया जा सकता है।

पुनरावृत्तीय कलनविधि

आव्यूह गुणान परिभाषा यह है कि यदि C = AB एक के लिए n × m आव्यूह A और एक m × p आव्यूह B, तब C एक n × p प्रविष्टियों के साथ आव्यूह के रूप में होता है

इससे, एक सरल कलनविधि का निर्माण किया जा सकता है जो सूचकांकों पर लूप करता है i 1 से लेकर n और j 1 से लेकर p, नेस्टेड लूप का उपयोग करके उपरोक्त की गणना की जा सकती है

  • Input: matrices Aand B
  • LetCbe a new matrix of the appropriate size
  • For i 1 to n:
    • Forj 1 top:
      • Let sum sum = 0
      • For k 1 tom:
        • Set sumsum ← sum + Aik × Bkj
      • Set Cij Cij ← sum
  • Return C

यह कलनविधि स्पर्शोन्मुख नोटेशन में समय Θ(nmp) लेता है।[1] इस प्रकार कलनविधि के विश्लेषण के उद्देश्य से एक सामान्य सरलीकरण यह मान लेता है कि इनपुट सभी आकार n × n के वर्ग आव्यूह होते है, जिस स्थिति में रनिंग समय Θ(n3), के रूप में अर्थात आयाम के आकार में घन होता है।[5]

कैशे व्यवहार

पंक्ति और स्तंभ-प्रमुख क्रम का चित्रण

पुनरावृत्तीय आव्यूह गुणन में तीन लूपों को शुद्धता या स्पर्शोन्मुख रनिंग टाइम पर प्रभाव के बिना एक दूसरे के साथ यादृच्छिक प्रकार से स्वैप किया जाता है। चूंकि, मेमोरी एक्सेस पैटर्न और कलनविधि के सीपीयू कैशे उपयोग के कारण व्यावहारिक ऑर्डर प्रदर्शन पर बहुत प्रभाव डालता है;[1] और इस प्रकार कौन सा क्रम सबसे अच्छा है यह इस बात पर भी निर्भर करता है कि क्या आव्यूह पंक्ति और स्तंभ प्रमुख का क्रम संग्रहीत हैं या दोनों के मिश्रण में संग्रहीत हैं।

विशेष रूप से, पूरी तरह से संबंधित कैश के आदर्श स्थिति में जिसमें M बाइट्स और b बाइट्स प्रति कैशे लाइन के रूप में सम्मलित होता है। (यदि M/b कैशे लाइनें), उपरोक्त कलनविधि इसके लिए सब-ऑप्टीमल है A और B पंक्ति-प्रमुख क्रम में संग्रहीत होते है जब n > M/b, आंतरिक लूप का प्रत्येक पुनरावृत्ति एक पंक्ति के माध्यम से एक साथ स्वीप होते है। इस प्रकार A का एक कॉलम B के किसी तत्व तक पहुंचने पर कैशे मिस B.हो जाता है इसका अर्थ यह है कि कलनविधि Θ(n3) के रूप में प्रयुक्त होता है और सबसे खराब स्थिति में कैशे छूट जाता है। वर्ष 2010 तक, प्रोसेसर की तुलना में मेमोरी की गति ऐसी होती है कि वास्तविक गणना के अतिरिक्त कैशे मिस हो जाता है, जो बड़े आकार के आव्यूह के लिए रनिंग समय पर प्रभावी हो जाता है।[6]

पंक्ति-प्रमुख लेआउट में A और B के लिए पुनरावृत्तीय कलनविधि का ऑप्टीमल संस्करण एक लूप टाइलिंग संस्करण है, जहां आव्यूह को आकार M द्वारा M के वर्गाकार टाइलों में विभाजित किया गया है,:[6][7]

  • इनपुट: मैट्रिसेस A और B
  • होने देना C उचित आकार का एक नया मैट्रिक्स बनें
  • टाइल का आकार चुनें T = Θ(M)
  • के लिए I 1 से n के चरणों में T:
    • के लिए J 1 से p के चरणों में T:
      • के लिए K 1 से m के चरणों में T:
        • गुणा करो AI:I+T, K:K+T और BK:K+T, J:J+T में CI:I+T, J:J+T, वह है:
        • के लिए i से I को min(I + T, n):
          • के लिए j से J को min(J + T, p):
            • होने देना sum = 0
            • के लिए k से K को min(K + T, m):
              • तय करना sum ← sum + Aik × Bkj
            • तय करना CijCij + sum
  • वापस करना C

आदर्शीकृत कैशे मॉडल में, यह कलनविधि केवल Θ(n3/b M) कैशे को प्रयुक्त करता है, जो आधुनिक मशीनों पर परिमाण के कई आदेशों तक भाजक b M मात्रा को मिस करता है,, जिससे कि कैशे मिस होने के अतिरिक्त वास्तविक गणना रनिंग समय पर प्रभावी हो जाते है।[6]

डिवाइड और क्न्क्वेर कलनविधि

पुनरावृत्तीय कलनविधि का एक विकल्प आव्यूह गुणन के लिए डिवाइड और क्न्क्वेर कलनविधि है। यह ब्लॉक आव्यूह पर निर्भर करता है

जो सभी वर्ग आव्यूहों के लिए काम करता है जिनके आयाम की दो घात हैं, अर्थात आकार 2n × 2n के रूप में है और कुछ के लिए n. आव्यूह गुणन के रूप में होता है,

जिसमें उपमैट्रिस के युग्मों के आठ गुणन होते हैं, जिसके बाद एक अतिरिक्त चरण होता है। इस प्रकार डिवाइड और क्न्क्वेर कलनविधि अदिश गुणन का उपयोग करके छोटे गुणन प्रत्यावर्तन की गणना करता है c11 = a11b11 इसके आधार स्थिति के रूप में है।

फलन के रूप में इस कलनविधि की जटिलता n पुनरावृत्ति द्वारा दिया जाता है[5]

आकार के आव्यूह पर आठ रिकर्सिव कॉलों के लिए लेखांकन n/2 और Θ(n2) परिणामी आव्यूहों के चार युग्मों का तत्व-वार योग होता है। मास्टर प्रमेय का अनुप्रयोग कलनविधि का विश्लेषण डिवाइड और क्न्क्वेर पुनरावृत्ति के लिए मास्टर प्रमेय इस पुनरावृत्ति को समाधान के लिए Θ(n3) पुनरावृत्तीय कलनविधि के समान दिखाता है,[5]

गैर-वर्ग आव्यूह

इस कलनविधि का एक प्रकार जो यादृच्छिक आकार के आव्यूह के लिए काम करता है और व्यवहार में फ़ास्ट होता है[6]आव्यूह को चार उपमैट्रिस में विभाजित करता है।[8] इस प्रकार आव्यूह को विभाजित करने का अर्थ अब इसे समान आकार के दो भागों में विभाजित करना है या विषम आयामों की स्थिती में जितना संभव हो सके समान आकार के निकट विभाजित करता है।

  • इनपुट: मैट्रिसेस A आकार का n × m, B आकार का m × p.
  • आधार मामला: यदि max(n, m, p) कुछ सीमा से नीचे है, पुनरावृत्त एल्गोरिदम के लूप का खुलना संस्करण का उपयोग करें।
  • पुनरावर्ती मामले:
  • अगर max(n, m, p) = n, विभाजित करना A क्षैतिज रूप से:
  • अन्यथा, यदि max(n, m, p) = p, विभाजित करना B लंबवत:
  • अन्यथा, max(n, m, p) = m. विभाजित करना A लंबवत और B क्षैतिज रूप से:

कैशे व्यवहार

रिकर्सिव आव्यूह गुणन की कैशे मिस दर लूप टाइलिंग पुनरावृत्तीय संस्करण के समान है, लेकिन उस कलनविधि के विपरीत, रिकर्सिव कलनविधि कैशे -विस्मृत कलनविधि है|कैशे -ओब्लिवियस:[8]ऑप्टीमल कैशे प्रदर्शन प्राप्त करने के लिए कोई ट्यूनिंग पैरामीटर आवश्यक नहीं है, और यह बहु क्रमादेशन वातावरण में अच्छा व्यवहार करता है जहां कैशे स्थान लेने वाली अन्य प्रक्रियाओं के कारण कैशे आकार प्रभावी रूप से गतिशील होते हैं।[6](सरल पुनरावृत्तीय कलनविधि कैशे -विस्मृत भी है, लेकिन यदि आव्यूह लेआउट कलनविधि के लिए अनुकूलित नहीं है तो व्यवहार में बहुत धीमा है।)

इस कलनविधि द्वारा किसी मशीन पर कैशे मिस होने की संख्या M आदर्श कैशे की पंक्तियाँ, प्रत्येक आकार की b बाइट्स, से घिरा है[8]: 13 


उप-घन कलन विधि

घातांक के अनुमानों में सुधार ωआव्यूह गुणन की अभिकलनात्मक जटिलता के लिए समय के साथ .

ऐसे कलनविधि उपस्थित हैं जो सीधे चलने वाले कलनविधि की तुलना में अच्छे चलने का समय प्रदान करते हैं। सबसे पहले खोजी गई स्ट्रैसेन कलनविधि थी, जिसे 1969 में वोल्कर स्ट्रैसन द्वारा तैयार किया गया था और इसे अधिकांशतः फास्ट आव्यूह गुणन के रूप में जाना जाता है। यह दो 2 × 2-आव्यूह को गुणा करने की विधि पर आधारित है, जिसमें कई अतिरिक्त जोड़ और घटाव संचालन की कीमत पर केवल 7 गुणन सामान्य 8 के अतिरिक्त की आवश्यकता होती है। इसे रिकर्सिव रूप से प्रयुक्त करने से गुणात्मक लागत वाला एक कलनविधि प्राप्त होता है . स्ट्रैसेन का कलनविधि अधिक जटिल है और अनुभवहीन कलनविधि की तुलना में संख्यात्मक स्थिरता कम हो गई है,[9] लेकिन ऐसे स्थितियों में यह n > 100 फ़ास्ट है[1] यह कई पुस्तकालयों में दिखाई देता है, जैसे कि BLAS (बुनियादी रैखिक बीजगणित सबप्रोग्राम )[10] यह परिमित क्षेत्र जैसे सटीक डोमेन पर बड़े आव्यूह के लिए बहुत उपयोगी है, जहां संख्यात्मक स्थिरता समस्या नहीं है।

सैद्धांतिक कंप्यूटर विज्ञान में यह एक खुला प्रश्न है कि समय जटिलता के संदर्भ में स्ट्रैसेन के कलनविधि को कितनी अच्छी तरह सुधारा जा सकता है। आव्यूह गुणन घातांक, सामान्यतः द्वारा निरूपित किया जाता है वह सबसे छोटी वास्तविक संख्या है जिसके लिए कोई भी किसी क्षेत्र पर क्षेत्र संक्रिया का उपयोग करके एक साथ गुणा किया जा सकता है इस प्रकार x पर उपस्थित सर्वश्रेष्ठ बाउंड जोश अल्मन और वर्जीनिया वासिलिव्स्का विलियम्स द्वारा है।[3] यह कलन विधि , अनुसंधान की इस पंक्ति में अन्य सभी वर्तमान कलनविधि की तरह कॉपरस्मिथ-विनोग्राड कलनविधि का एक सामान्यीकरण है, जो 1990 में डॉन कॉपरस्मिथ और शमूएल विनोग्राड द्वारा दिया गया था।[11] इन कलनविधि का वैचारिक विचार स्ट्रैसेन के कलनविधि के समान है और दो k × k आव्यूह को k3 से कम गुणन के साथ गुणा करने का एक तरीका तैयार किया गया है और इस प्रोद्योगिकीय को पुनरावर्ती के रूप से प्रयुक्त किया जाता है। चूंकि, बिग o नोटेशन द्वारा छिपा हुआ निरंतर गुणांक इतना बड़ा है कि ये कलनविधि केवल उन आव्यूह के लिए उपयुक्त हैं जो वर्तमान कंप्यूटरों पर संभालने के लिए बहुत बड़े हैं।[12][13]

फ़्रीवाल्ड्स का कलनविधि एक सरल मोंटे कार्लो कलनविधि है, जो आव्यूह A, B और C, दिए जाने पर Θ(n2) समय में सत्यापित करता है यदि AB = C है

अल्फा टेन्सर

2022 में, डीपमाइंड ने अल्फ़ाटेनसर न्यूरल नेटवर्क प्रस्तुत किया है, जिसने हजारों आव्यूह गुणन कलनविधि का आविष्कार करने के लिए एकल-प्लेयर गेम सादृश्य का उपयोग किया, जिनमें से कुछ पहले मनुष्यों द्वारा खोजे गए थे और कुछ जो नहीं थे।[14] संचालन गैर-कम्यूटेटिव ग्राउंड क्षेत्र सामान्य अंकगणित और परिमित क्षेत्र मॉड 2 अंकगणित तक ही सीमित थे,। इस प्रकार सबसे अच्छा व्यावहारिक आव्यूह गुणन टेंसर का स्पष्ट निम्न-रैंक अपघटन कलनविधि O(n2.778) के रूप में पाया गया था [15] ऐसे टेंसर और उससे आगे के निम्न-श्रेणी के अपघटन का पता लगाना NP कठिन है; इस प्रकार 3x3 आव्यूह के लिए भी ऑप्टीमल गुणन आव्यूह गुणन की अभिकलनात्मक जटिलता क्रमविनिमेय क्षेत्र में भी गुणन की संख्या को न्यूनतम करना।[15] इस प्रकार 4x4 आव्यूह पर, अल्फ़ाटेन्सर ने अप्रत्याशित रूप से 47 गुणन चरणों के साथ एक समाधान खोजा था, जो 1969 के स्ट्रैसेन के कलनविधि के साथ आवश्यक 49 से अधिक सुधार हुआ था, चूंकि मॉड 2 अंकगणित तक सीमित था। इसी तरह, अल्फ़ाटेन्सर ने स्ट्रैसेन के 98 चरणों के अतिरिक्त 96 के साथ 5x5 आव्यूह को हल किया गया था । आश्चर्यजनक खोज के आधार पर कि इस तरह के सुधार उपस्थित हैं, अन्य शोधकर्ता तुरंत एक समान स्वतंत्र 4x4 कलनविधि ढूंढने में सक्षम थे और भिन्न से डीपमाइंड के 96-चरण 5x5 कलनविधि को मॉड 2 अंकगणित में 95 चरणों तक और 97 तक छोटा कर दिया था।[16] सामान्य अंकगणित में.[17] कुछ कलनविधि पहले कभी नहीं खोजे गए थे, उदाहरण (4, 5, 5) सामान्य और मॉड 2 अंकगणित में 80 से सुधरकर 76 हो गया था।

समानांतर और वितरित कलन विधि

साझा-मेमोरी समानता

  1. डिवाइड और क्न्क्वेर कलनविधि डिवाइड और क्न्क्वेर कलनविधि पहले स्केच किया गया साझा-मेमोरी मल्टीप्रोसेसर के लिए दो विधीयो से समानांतर कलनविधि हो सकता है। ये इस तथ्य पर आधारित हैं कि आठ रिकर्सिव आव्यूह गुणन में इस प्रकार है

चार योगों की तरह, एक-दूसरे से स्वतंत्र रूप से निष्पादित किया जा सकता है, चूंकि कलनविधि को योग करने से पहले गुणन को जोड़ने की आवश्यकता होती है। इस प्रकार समस्या की पूर्ण समानता का उपयोग करते हुए कलनविधि प्राप्त होता है जिसे फोर्क-जॉइन मॉडल पीसूडोकोड में व्यक्त किया जा सकता है:[18]

प्रक्रिया multiply(C, A, B):

  • आधार मामला: यदि n = 1, तय करना c11a11 × b11 (या एक छोटे ब्लॉक मैट्रिक्स को गुणा करें)।
  • अन्यथा, एक नए मैट्रिक्स के लिए स्थान आवंटित करें T आकार का n × n, तब:
    • विभाजन A में A11, A12, A21, A22.
    • विभाजन B में B11, B12, B21, B22.
    • विभाजन C में C11, C12, C21, C22.
    • विभाजन T में T11, T12, T21, T22.
    • समानांतर निष्पादन:
      • काँटा multiply(C11, A11, B11).
      • काँटा multiply(C12, A11, B12).
      • काँटा multiply(C21, A21, B11).
      • काँटा multiply(C22, A21, B12).
      • काँटा multiply(T11, A12, B21).
      • काँटा multiply(T12, A12, B22).
      • काँटा multiply(T21, A22, B21).
      • काँटा multiply(T22, A22, B22).
    • जुड़ें (समानांतर कांटे के पूरा होने तक प्रतीक्षा करें)।
    • add(C, T).
    • आवंटन रद्द करें T.

प्रक्रिया add(C, T) जोड़ता है T में C, तत्व अनुसार:

  • आधार मामला: यदि n = 1, तय करना c11c11 + t11 (या एक छोटा लूप बनाएं, शायद अनियंत्रित)।
  • अन्यथा:
    • विभाजन C में C11, C12, C21, C22.
    • विभाजन T में T11, T12, T21, T22.
    • समानांतर में:
      • काँटा add(C11, T11).
      • काँटा add(C12, T12).
      • काँटा add(C21, T21).
      • काँटा add(C22, T22).
    • जोड़ना।

यहां, फोर्क एक कीवर्ड है जो संकेत देता है कि गणना को शेष फलन कॉल के साथ समानांतर में चलाया जा सकता है, जबकि जॉइन पहले से फोर्क की गई सभी गणनाओं के पूरा होने की प्रतीक्षा करता है। विभाजन केवल सूचक हेरफेर द्वारा अपना लक्ष्य प्राप्त करता है।

इस कलनविधि में Θ(log2 n) चरण एक महत्वपूर्ण पथ लंबाई है, जिसका अर्थ है कि अनंत संख्या में प्रोसेसर वाली एक आदर्श मशीन पर इतना समय लगता है; इसलिए, किसी भी वास्तविक कंप्यूटर पर इसकी अधिकतम संभव गति Θ(n3/log2 n) है, अस्थायी आव्यूह T से डेटा ले जाने में निहित संचार लागत के कारण कलनविधि व्यावहारिक नहीं है, लेकिन एक अधिक व्यावहारिक संस्करण अस्थायी आव्यूह का उपयोग किए बिना Θ(n2) स्पीडअप प्राप्त करता है।[18]

ब्लॉक आव्यूह गुणन. 2D कलनविधि में, प्रत्येक प्रोसेसर एक सबआव्यूह के लिए उत्तरदायी होता है C. 3D कलनविधि में, सबआव्यूह की प्रत्येक जोड़ी A और B जिसे गुणा किया जाता है उसे एक प्रोसेसर को सौंपा जाता है।

संचार अवॉयड और डिस्ट्रिब्यूटेड कलन विधि

आधुनिक आर्किटेक्चर में हाइरार्की मेमोरी के साथ इनपुट आव्यूह तत्वों को लोड करने और संग्रहीत करने की लागत अंकगणित की लागत पर प्रभाव डालती है और इस प्रकार एक ही मशीन पर यह रैम और कैशे के बीच स्थानांतरित किए गए डेटा की मात्रा के रूप में होती है, जबकि एक डिस्ट्रिब्यूटेड मेमोरी मल्टी-नोड मशीन पर यह नोड्स के बीच स्थानांतरित की गई राशि के रूप में होती है और किसी भी स्थिति में इसे संचार बैंडविड्थ कहा जाता है। तीन नेस्टेड लूप का उपयोग करने वाला अनुभवहीन कलनविधि Ω(n3) संचार बैंडविड्थ.का उपयोग करता है

कैनन का कलन विधि , जिसे 2D कलनविधि के रूप में भी जाना जाता है, एक संचार से अवॉयड कलनविधि जो प्रत्येक इनपुट आव्यूह को एक ब्लॉक आव्यूह में विभाजित करता है जिसके तत्व के आकार M/3 द्वारा M/3 के रूप में सबआव्यूह होते हैं जहाँ M फ़ास्ट ी से मेमोरी का आकार है।[19] इसके बाद अनुभवहीन कलनविधि का उपयोग ब्लॉक मैट्रिसेस पर किया जाता है, जो पूरी तरह से फ़ास्ट मेमोरी में सबमैट्रिसेस के गुणन की गणना करता है। इससे संचार बैंडविड्थ को O(n3/M) तक कम कर देता है, जो असिम्प्टोटिकालीय रूप से ऑप्टीमल है Ω(n3) है।[20][21]

वितरित सेटिंग में, p 2D मेशेस द्वारा p में व्यवस्थित P प्रोसेसरों में परिणाम का एक सबआव्यूह प्रत्येक प्रोसेसर को सौंपा जाता है और प्रत्येक O(n2/p) शब्द प्रोसेसर ट्रांसमिटिंग के साथ गुणन की गणना की जा सकती है जो कि असम्बद्ध रूप से ऑप्टीमल है, यह मानते हुए कि प्रत्येक नोड न्यूनतम O(n2/p) तत्वसंग्रहीत करता है.[21]इसे 3D कलनविधि द्वारा अच्छे से बनाया जा सकता है, जो प्रोसेसर को 3D क्यूब मेशेस में व्यवस्थित करता है और इस प्रकार दो इनपुट सबमैट्रिसेस के प्रत्येक गुणन को एक ही प्रोसेसर को निर्दिष्ट करता है। फिर प्रत्येक पंक्ति पर कमी करके परिणाम सबमैट्रिस के रूप में उत्पन्न किए जाते हैं।[22] यह कलनविधि प्रति प्रोसेसर O(n2/p2/3) शब्दों को संचारित करता है जो कि असम्बद्ध रूप से ऑप्टीमल है।[21]चूंकि, इसके लिए प्रत्येक इनपुट आव्यूह तत्व p1/3 बार दोहराने की आवश्यकता होती है और इसलिए इनपुट को संग्रहीत करने के लिए आवश्यकता से अधिक p1/3 मेमोरी की आवश्यकता होती है। इस कलनविधि के रनटाइम को कम करने के लिए स्ट्रैसेन के साथ जोड़ा जा सकता है।[22] 2.5D कलनविधि मेमोरी उपयोग और संचार बैंडविड्थ के बीच एक निरंतर ट्रेडऑफ़ प्रदान करता है।[23] मैप रेडूस जैसे आधुनिक वितरित अभिकलन वातावरण पर, विशेष गुणन कलनविधि विकसित किए गए हैं।[24]

मेशेस कलन विधि

क्रॉस-वायर्ड मेशेस पर दो n×n आव्यूह के लिए आव्यूह गुणन 2n-1 चरणों में पूरा होता है।

मेशेस नेटवर्किंग पर गुणन के लिए विभिन्न प्रकार के कलनविधि हैं। 2D कैनन के कलनविधि का उपयोग करके एक मानक द्वि-आयामी मेशेस पर दो n×n के गुणन के लिए कोई 3n-2 चरणों में गुणन को पूरा कर सकता है, चूंकि बार-बार की गणना के लिए यह संख्या आधी हो जाती है।[25] इस प्रकार मानक सरणी अक्षम है क्योंकि दो आव्यूह से डेटा एक साथ नहीं आता है और इसे शून्य के साथ पैडेड होना चाहिए।

परिणाम दो-परत क्रॉस-वायर्ड मेशेस पर और भी फ़ास्ट ़ है, जहां केवल 2n-1 चरणों की आवश्यकता होती है।[26] इस प्रकार बार-बार गणना करने पर प्रदर्शन में और सुधार होता है जिससे 100% दक्षता प्राप्त होती है।[27] और क्रॉस-वायर्ड मेशेस सरणी को गैर-प्लानर (अर्थात बहुपरत) प्रसंस्करण संरचना के एक विशेष स्थिति के रूप में देखा जा सकता है।[28]

यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 1.3 Skiena, Steven (2008). "Sorting and Searching". एल्गोरिथम डिज़ाइन मैनुअल. Springer. pp. 45–46, 401–3. doi:10.1007/978-1-84800-070-4_4. ISBN 978-1-84800-069-8.
  2. Duan, Ran; Wu, Hongxun; Zhou, Renfei (2022), Faster Matrix Multiplication via Asymmetric Hashing, arXiv:2210.10173
  3. 3.0 3.1 Alman, Josh; Williams, Virginia Vassilevska (2020), "A Refined Laser Method and Faster Matrix Multiplication", 32nd Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 2021), arXiv:2010.05846
  4. Hartnett, Kevin (23 March 2021). "मैट्रिक्स गुणन इंच पौराणिक लक्ष्य के करीब". Quanta Magazine (in English). Retrieved 2021-04-01.
  5. 5.0 5.1 5.2 Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009) [1990]. Introduction to Algorithms (3rd ed.). MIT Press and McGraw-Hill. pp. 75–79. ISBN 0-262-03384-4.
  6. 6.0 6.1 6.2 6.3 6.4 Amarasinghe, Saman; Leiserson, Charles (2010). "6.172 Performance Engineering of Software Systems, Lecture 8". MIT OpenCourseWare. Massachusetts Institute of Technology. Retrieved 27 January 2015.
  7. Lam, Monica S.; Rothberg, Edward E.; Wolf, Michael E. (1991). अवरुद्ध एल्गोरिदम का कैश प्रदर्शन और अनुकूलन. ASPLOS91: 4th Int'l Conference on Architecture Support for Programming Languages & Operating Systems. doi:10.1145/106972.106981. ISBN 978-0-89791-380-5.
  8. 8.0 8.1 8.2 Prokop, Harald (1999). कैश-ओब्लिवियस एल्गोरिदम (PDF) (Master's). MIT. hdl:1721.1/80568.
  9. Miller, Webb (1975), "Computational complexity and numerical stability", SIAM News, 4 (2): 97–107, CiteSeerX 10.1.1.148.9947, doi:10.1137/0204009
  10. Press, William H.; Flannery, Brian P.; Teukolsky, Saul A.; Vetterling, William T. (2007). Numerical Recipes: The Art of Scientific Computing (3rd ed.). Cambridge University Press. p. 108. ISBN 978-0-521-88068-8.
  11. Coppersmith, Don; Winograd, Shmuel (1990), "Matrix multiplication via arithmetic progressions" (PDF), Journal of Symbolic Computation, 9 (3): 251, doi:10.1016/S0747-7171(08)80013-2
  12. Iliopoulos, Costas S. (1989), "Worst-case complexity bounds on algorithms for computing the canonical structure of finite abelian groups and the Hermite and Smith normal forms of an integer matrix" (PDF), SIAM Journal on Computing, 18 (4): 658–669, CiteSeerX 10.1.1.531.9309, doi:10.1137/0218045, MR 1004789, archived from the original (PDF) on 2014-03-05, retrieved 2015-01-16, The Coppersmith–Winograd algorithm is not practical, due to the very large hidden constant in the upper bound on the number of multiplications required.
  13. Robinson, Sara (November 2005), "Toward an Optimal Algorithm for Matrix Multiplication" (PDF), SIAM News, 38 (9), Even if someone manages to prove one of the conjectures—thereby demonstrating that ω = 2—the wreath product approach is unlikely to be applicable to the large matrix problems that arise in practice. [...] the input matrices must be astronomically large for the difference in time to be apparent.
  14. "AlphaTensor के साथ नवीन एल्गोरिदम की खोज". www.deepmind.com (in English). Retrieved 2022-11-01.
  15. 15.0 15.1 Fawzi, Alhussein; Balog, Matej; Huang, Aja; Hubert, Thomas; Romera-Paredes, Bernardino; Barekatain, Mohammadamin; Novikov, Alexander; R. Ruiz, Francisco J.; Schrittwieser, Julian; Swirszcz, Grzegorz; Silver, David; Hassabis, Demis; Kohli, Pushmeet (October 2022). "सुदृढीकरण सीखने के साथ तेज़ मैट्रिक्स गुणन एल्गोरिदम की खोज करना". Nature. 610 (7930): 47–53. Bibcode:2022Natur.610...47F. doi:10.1038/s41586-022-05172-4. ISSN 1476-4687. PMC 9534758. PMID 36198780.
  16. Kauers, Manuel; Moosbauer, Jakob (2022-12-02). "मैट्रिक्स गुणन के लिए फ़्लिप ग्राफ़". arXiv:2212.01175 [cs.SC].
  17. Brubaker, Ben (23 November 2022). "एआई मैट्रिक्स गुणन में नई संभावनाओं को प्रकट करता है". Quanta Magazine (in English). Retrieved 26 November 2022.
  18. 18.0 18.1 Randall, Keith H. (1998). Cilk: Efficient Multithreaded Computing (PDF) (Ph.D.). Massachusetts Institute of Technology. pp. 54–57. hdl:1721.1/47519.
  19. Cannon, Lynn Elliot (14 July 1969). कलमन फ़िल्टर एल्गोरिथम को लागू करने के लिए एक सेलुलर कंप्यूटर (Ph.D.). Montana State University.
  20. Hong, J. W.; Kung, H. T. (1981). "I/O complexity: The red-blue pebble game" (PDF). STOC '81: Proceedings of the Thirteenth Annual ACM Symposium on Theory of Computing: 326–333. doi:10.1145/800076.802486. S2CID 8410593. Archived (PDF) from the original on December 15, 2019.
  21. 21.0 21.1 21.2 Irony, Dror; Toledo, Sivan; Tiskin, Alexander (September 2004). "वितरित-मेमोरी मैट्रिक्स गुणन के लिए संचार निचली सीमाएं". J. Parallel Distrib. Comput. 64 (9): 1017–26. CiteSeerX 10.1.1.20.7034. doi:10.1016/j.jpdc.2004.03.021.
  22. 22.0 22.1 Agarwal, R.C.; Balle, S. M.; Gustavson, F. G.; Joshi, M.; Palkar, P. (September 1995). "समानांतर मैट्रिक्स गुणन के लिए एक त्रि-आयामी दृष्टिकोण". IBM J. Res. Dev. 39 (5): 575–582. CiteSeerX 10.1.1.44.3404. doi:10.1147/rd.395.0575.
  23. Solomonik, Edgar; Demmel, James (2011). "Communication-optimal parallel 2.5D matrix multiplication and LU factorization algorithms" (PDF). Proceedings of the 17th International Conference on Parallel Processing. Vol. Part II. pp. 90–109. doi:10.1007/978-3-642-23397-5_10. ISBN 978-3-642-23397-5.
  24. Bosagh Zadeh, Reza; Carlsson, Gunnar (2013). "MapReduce का उपयोग करके आयाम स्वतंत्र मैट्रिक्स स्क्वायर" (PDF). arXiv:1304.1467. Bibcode:2013arXiv1304.1467B. Retrieved 12 July 2014.
  25. Bae, S.E.; Shinn, T.-W.; Takaoka, T. (2014). "जाल सरणी पर मैट्रिक्स गुणन के लिए एक तेज़ समानांतर एल्गोरिदम". Procedia Computer Science. 29: 2230–40. doi:10.1016/j.procs.2014.05.208.
  26. Kak, S (1988). "मैट्रिक्स गुणन के लिए एक दो-परत जाल सरणी". Parallel Computing. 6 (3): 383–5. CiteSeerX 10.1.1.88.8527. doi:10.1016/0167-8191(88)90078-6.
  27. Kak, S. (2014). "क्रॉस-वायर्ड जाल सरणी पर मैट्रिक्स गुणन की दक्षता". arXiv:1411.3273 [cs.DC].
  28. Kak, S (1988). "बहुस्तरीय सरणी कंप्यूटिंग". Information Sciences. 45 (3): 347–365. CiteSeerX 10.1.1.90.4753. doi:10.1016/0020-0255(88)90010-2.


अग्रिम पठन