मल्टिप्लाई–एक्यूम्युलेट ऑपरेशन: Difference between revisions
(Created page with "{{Short description|Operation common in numerical signal processing}} कम्प्यूटिंग में, विशेष रूप से अंकीय...") |
(minor changes) |
||
Line 1: | Line 1: | ||
{{Short description|Operation common in numerical signal processing}} | {{Short description|Operation common in numerical signal processing}} | ||
[[ कम्प्यूटिंग ]] में, | [[ कम्प्यूटिंग |कम्प्यूटिंग]] में, खासकर [[ अंकीय संकेत प्रक्रिया |डिजिटल सिग्नल प्रोसेसिंग]] में, मल्टिप्लाई-एक्यूम्युलेट (MAC) या मल्टिप्लाई-एड (MAD) ऑपरेशन एक सामान्य कदम है जो दो नंबरों का गुणन-योग (प्रोडक्ट) करता है और उस प्रोडक्ट को एक [[संचायक (कंप्यूटिंग)|एक्यूम्युलेटर]] में जोड़ता है। ऑपरेशन को करने वाली हार्डवेयर यूनिट को मल्टीप्लाई-एक्यूम्युलेटर (MAC यूनिट) के रूप में जाना जाता है; स्वयं ऑपरेशन को अक्सर एक MAC या MAD ऑपरेशन भी कहा जाता है। MAC ऑपरेशन एक एक्यूम्युलेटर एक a को संशोधित करता है: | ||
:<math>\ a \leftarrow a + ( b \times c )</math> | :<math>\ a \leftarrow a + ( b \times c )</math> | ||
[[तैरनेवाला स्थल|फ्लोटिंग पॉइंट]] नंबरों के साथ काम करने पर, इसे दो [[ गोलाई |गोलाईयों]] (बहुत से [[डिजिटल सिग्नल प्रोसेसर|DSP]] में सामान्य) के साथ किया जा सकता है, या एक गोलाईयों के साथ किया जा सकता है। एकल गोलाईयों के साथ किया जाने पर, इसे फ्यूज्ड मल्टिप्लाई-एड (FMA) या फ्यूज्ड मल्टिप्लाई-एक्यूम्युलेट (FMAC) कहा जाता है। | |||
आधुनिक कंप्यूटर में एक विशेषित MAC (मल्टिप्लाई-एक्यूम्युलेटर) हो सकता है, जिसमें एक [[संयोजन तर्क|कम्बिनेशनल लॉजिक]] में लागू मल्टिप्लायर, एक [[योजक (इलेक्ट्रॉनिक्स)|एडर]] और रिजिस्टर होता है जो परिणाम को संग्रहीत करता है। रिजिस्टर का आउटपुट एडर के एक इनपुट में पुनर्वितरण किया जाता है, इस प्रकार प्रत्येक घड़ी के साइकिल पर, मल्टिप्लायर का आउटपुट रजिस्टर में जोड़ा जाता है। कम्बिनेशनल मल्टिप्लायर बड़े मात्रा में लॉजिक की आवश्यकता होती है, लेकिन पहले के कंप्यूटरों के उनके [[किसान गुणन|शिफ्टिंग और जोड़ने के तरीके]] की तुलना में वे उत्पाद को बहुत तेजी से निर्धारित कर सकते हैं। 1909 में [[पर्सी लुडगेट|पर्सी लज्गेट]] ने अपनी एनालिटिकल मशीन में पहले MAC की विचारधारा को अभिज्ञात किया था,<ref>{{cite web |url=http://www.fano.co.uk/ludgate/ |title=लुडगेट की विश्लेषणात्मक मशीन की व्यवहार्यता|url-status=live |archive-url=https://web.archive.org/web/20190807233229/http://www.fano.co.uk/ludgate/ |archive-date=2019-08-07 |access-date=2020-08-30}}</ref> और विभाजन के लिए पहले MAC का उपयोग किया (जो रूपांतरित श्रृंगांतक्रम {{math|(1+''x'')<sup>−1</sup>}} के माध्यम से प्रारंभिक गुणना उपयुक्त करती थी)। पहले आधुनिक प्रोसेसर जो MAC यूनिट के साथ संपन्न हुए थे, वे [[डिजिटल सिग्नल प्रोसेसर]] थे, लेकिन यह तकनीक अब सामान्य उद्देश्य प्रोसेसरों में भी आम हो गई है।<ref>{{Cite journal|last1=Lyakhov|first1=Pavel|last2=Valueva|first2=Maria|last3=Valuev|first3=Georgii|last4=Nagornov|first4=Nikolai|date=January 2020|title=काटे गए बहु-संचित इकाइयों के आधार पर डिजिटल फ़िल्टर प्रदर्शन को बढ़ाने की एक विधि|journal=Applied Sciences|language=en|volume=10|issue=24|pages=9052|doi=10.3390/app10249052|doi-access=free}}</ref><ref>{{Cite book|last1=Tung Thanh Hoang|last2=Sjalander|first2=M.|last3=Larsson-Edefors|first3=P.|title=2009 IEEE International Symposium on Parallel & Distributed Processing |chapter=Double Throughput Multiply-Accumulate unit for FlexCore processor enhancements |date=May 2009|chapter-url=https://ieeexplore.ieee.org/document/5161212|pages=1–7|doi=10.1109/IPDPS.2009.5161212|isbn=978-1-4244-3751-1|s2cid=14535090}}</ref><ref>{{Cite journal|date=2020-03-01|title=PV-MAC: Multiply-and-accumulate unit structure exploiting precision variability in on-device convolutional neural networks|url=https://www.sciencedirect.com/science/article/abs/pii/S0167926019302809|journal=Integration|language=en|volume=71|pages=76–85|doi=10.1016/j.vlsi.2019.11.003|issn=0167-9260|last1=Kang|first1=Jongsung|last2=Kim|first2=Taewhan|s2cid=211264132 }}</ref><ref>{{cite web |url=https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/mad---ps|title=पागल - पी.एस|access-date=2021-08-14}}</ref> | |||
==फ़्लोटिंग-पॉइंट अंकगणित में== | |||
जब [[पूर्णांक|इंटीजर्स]] के साथ किया जाता है, तो यह ऑपरेशन सामान्य रूप से बिल्कुल सही होता है (किसी [[दो की शक्ति|दो के घात]] के साथ की गणना [[मॉड्यूलर अंकगणित|मॉड्यूलो]])। हालांकि, [[फ़्लोटिंग-पॉइंट अंकगणित|फ़्लोटिंग-पॉइंट]] नंबर्स के पास केवल निश्चित मात्रा में गणितीय सटीकता होती है। अर्थात्, डिजिटल फ्लोटिंग-पॉइंट अंकगणित आम तौर पर गठनशील नहीं होता है और ना ही समानुपाती या वितरक। ({{slink|फ्लोटिंग पॉइंट§सटीकता समस्याएँ}} देखें)। इसलिए, यह फर्क पड़ता है कि परिणाम में क्या अंतर होता है कि क्या दो गोलाईयों के साथ मल्टिप्लाई-एड किया जाता है, या एक ऑपरेशन में एकल गोलाईयों के साथ (फ्यूज्ड मल्टिप्लाई-एड)। [[आईईईई 754-2008]] ने निर्धारित किया है कि इसे एक गोलाईयों के साथ किया जाना चाहिए, जिससे अधिक सटीक परिणाम प्राप्त होता है।<ref>{{cite web |url=https://developer.nvidia.com/sites/default/files/akamai/cuda/files/NVIDIA-CUDA-Floating-Point.pdf |title=Precision & Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs |publisher=nvidia |first1=Nathan |last1=Whitehead |first2=Alex |last2=Fit-Florea |year=2011 |access-date=2013-08-31}}</ref> | |||
==फ़्यूज्ड गुणा-जोड़ें== | ==फ़्यूज्ड गुणा-जोड़ें== | ||
फ्यूज्ड मल्टिप्लाई-एड (FMA या fmadd)<ref>{{cite web|title=fmadd instrs|website=[[IBM]] |url=https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.alangref/idalangref_fmadd_instrs.htm}}</ref> एक फ्लोटिंग-पॉइंट मल्टिप्लाई-एड ऑपरेशन है जो एक ही कदम में किया जाता है और एकल गोलाईयों के साथ होता है। अर्थात्, जहां एक अफ्यूज्ड मल्टिप्लाई-एड गणना {{math|''b'' × ''c''}} का उत्पाद करेगा, उसे N महत्वपूर्ण बिटों में गोलाईयों के साथ देखेगा, फिर इसे a के साथ जोड़ेगा और फिर आखिरी परिणाम को फिर से N महत्वपूर्ण बिटों में गोलाईयों के साथ देखेगा, वहीं एक फ्यूज्ड मल्टिप्लाई-एड भागफलस्वरूप व्यक्ति ने पूरे प्रकार से अभिव्यक्ति {{math|''a'' + (''b'' × ''c'')}} की गणना करेगा और अंतिम परिणाम को N महत्वपूर्ण बिटों में गोलाईयों के साथ देखेगा। | |||
एक | |||
एक तेज़ एफएमए उत्पादों के संचय | एक तेज़ एफएमए उत्पादों के संचय को शामिल करने वाली कई संगणनाओं की सटीकता को तेज़ और बेहतर कर सकता है: | ||
* [[डॉट उत्पाद]] | * [[डॉट उत्पाद|अदिश गुणनफल]] | ||
* [[मैट्रिक्स गुणन]] | * [[मैट्रिक्स गुणन]] | ||
* [[बहुपद मूल्यांकन]] (उदाहरण के लिए, हॉर्नर के नियम के साथ) | * [[बहुपद मूल्यांकन]] (उदाहरण के लिए, हॉर्नर के नियम के साथ) | ||
* कार्यों के मूल्यांकन के लिए न्यूटन की विधि ( | * कार्यों के मूल्यांकन के लिए न्यूटन की विधि (व्युत्क्रम फलन से) | ||
* | *कनवल्शन और कृत्रिम तंत्रिका नेटवर्क | ||
* | * डबल-डबल अंकगणित में गुणन | ||
अधिक सटीक परिणाम देने के लिए | फ्यूज्ड मल्टिप्लाई-एड आम तौर पर अधिक सटीक परिणाम देने के लिए भरोसे के लायक होता है। हालांकि, [[विलियम मोर्टों कहाँ|विलियम कहान]] ने इसका संकेत किया है कि यदि यह बिना सोचे-समझे उपयोग किया जाए तो इससे समस्याएँ हो सकती हैं।<ref>{{cite web |title=IEEE Standard 754 for Binary Floating-Point Arithmetic |author-first=William |author-last=Kahan |author-link=William Morton Kahan |url=http://www.cs.berkeley.edu/~wkahan/ieee754status/ieee754.ps |date=1996-05-31}}</ref> यदि {{math|''x''<sup>2</sup> − ''y''<sup>2</sup>}} को {{math|((''x'' × ''x'') − ''y'' × ''y'')}} (जिसमें कहान द्वारा सुझाया गया नोटेशन अनुसरण किया जाता है जिसमें अतिरिक्त ब्रैकेट द्वारा कम्पाइलर को दिशा दी जाती है कि पहले {{math|(''x'' × ''x'')}} शब्द को गोलाईयों में देखा जाए) के रूप में फ्यूज्ड मल्टिप्लाई-एड का उपयोग किया जाए, तो परिणाम नकारात्मक हो सकता है, भले ही {{math|''x'' {{=}} ''y''}} हो। इसका मतलब है कि पहली गुणना निम्न महत्वपूर्णता बिटों को छोड़ देगी। यदि इसके बाद परिणाम का वर्गमूल निकाला जाए तो यह त्रुटि के लिए कारण बन सकता है। | ||
जब एक [[माइक्रोप्रोसेसर]] के अंदर लागू किया जाता है, तो | जब एक [[माइक्रोप्रोसेसर]] के अंदर लागू किया जाता है, तो एफएमए एक ऐड के बाद होने वाले मल्टीपल ऑपरेशन से तेज हो सकता है। हालाँकि, मूल IBM RS/6000 डिज़ाइन पर आधारित मानक औद्योगिक कार्यान्वयन के लिए योग की ठीक से गणना करने के लिए 2N-बिट योजक की आवश्यकता होती है।<ref>{{cite thesis |url=http://repositories.lib.utexas.edu/bitstream/handle/2152/3082/quinnelle60861.pdf |date=May 2007 |title=Floating-Point Fused Multiply–Add Architectures |author-first=Eric |author-last=Quinnell |degree=PhD |access-date=2011-03-28}}</ref> | ||
इस निर्देश को शामिल करने का एक अन्य लाभ यह है कि यह विभाजन | |||
इस निर्देश को शामिल करने का एक अन्य लाभ यह है कि यह विभाजन ([[विभाजन एल्गोरिथ्म]] देखें) और [[वर्गमूल]] (वर्गमूल की गणना के तरीके देखें) संचालन के एक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति देता है, इस प्रकार उन कार्यों के लिए समर्पित हार्डवेयर की आवश्यकता समाप्त हो जाती है।<ref name="goldschmidt_algo">{{cite conference |citeseerx=10.1.1.85.9648 |title=गोल्डस्मिड्ट के एल्गोरिदम का उपयोग करते हुए सॉफ्टवेयर डिवीजन और स्क्वायर रूट|author-first=Peter |author-last=Markstein |date=November 2004 |conference=6th Conference on Real Numbers and Computers |url=http://www.informatik.uni-trier.de/Reports/TR-08-2004/rnc6_12_markstein.pdf}}</ref> | |||
===डॉट उत्पाद अनुदेश=== | ===डॉट उत्पाद अनुदेश=== | ||
कुछ मशीनें कई | विभिन्न मशीनों में कुछ मशीनें कई फ्यूज्ड मल्टिप्लाई-एड ऑपरेशनों को एक स्टेप में संयुक्त करती हैं, उदाहरण के लिए एक 128-बिट SIMD रजिस्टर में <code>a0×b0 + a1×b1 + a2×b2 + a3×b3</code> के दो चार-घटक डॉट-प्रोडक्ट का एकल साइकिल द्वारा प्रवाहशीलता से प्रदर्शन करती हैं। | ||
===समर्थन=== | ===समर्थन=== | ||
एफएमए ऑपरेशन | एफएमए ऑपरेशन IEEE 754-2008 में शामिल है। | ||
[[डिजिटल उपकरण निगम|डिजिटल इक्विपमेंट कॉर्पोरेशन]] (DEC) [[वैक्स|VAX]] के <code>POLY</code> निर्देश का उपयोग गुणा और जोड़ चरणों के क्रम का उपयोग करके हॉर्नर नियम के साथ बहुपदों का मूल्यांकन करने के लिए किया जाता है। निर्देश विवरण यह निर्दिष्ट नहीं करते हैं कि गुणा और जोड़ एक ही एफएमए चरण का उपयोग करके किया जाता है या नहीं।<ref>{{Cite web |url=http://uranium.vaxpower.org/~isildur/vax/week.html |title=VAX instruction of the week: POLY |url-status=dead |archive-url=https://web.archive.org/web/20200213093219/http://uranium.vaxpower.org/~isildur/vax/week.html |archive-date=2020-02-13}}</ref> यह निर्देश 1977 में अपने मूल 11/780 कार्यान्वयन के बाद से VAX अनुदेश सेट का एक हिस्सा रहा है। | |||
[[ | C प्रोग्रामिंग भाषा की 1999 की मानक एक FMA (फ्यूज्ड मल्टिप्लाई-एड) ऑपरेशन का समर्थन fma() मानक गणितीय पुस्तकालय फ़ंक्शन के माध्यम से करती है और एक गुणन एवं एक जोड़ के पश्चात आपूर्ति की स्वचालित परिवर्तन (फ्लोटिंग-पॉइंट अभिव्यक्तियों का संकुचन), जो मानक प्रग्माओं ({{code|#pragma STDC FP_CONTRACT}}) के माध्यम से स्पष्ट रूप से सक्षम या अक्षम किया जा सकता है। [[जीएनयू कंपाइलर संग्रह|GCC]] और [[बजना|Clang]] C कंपाइलर ऐसे रूपांतरण को उन प्रोसेसर शास्त्रविद्याओं के लिए डिफ़ॉल्ट रूप से करते हैं जो FMA निर्देशिकाएं समर्थन करती हैं। GCC, जिसमें उक्त प्रग्मा का समर्थन नहीं है, <ref>{{cite web |title=Bug 20785 - Pragma STDC * (C99 FP) unimplemented |url=https://gcc.gnu.org/bugzilla/show_bug.cgi?id=20785 |access-date=2022-02-02 |website=gcc.gnu.org}}</ref> इसे <code>-ffp-contract</code> कमांड लाइन विकल्प से वैश्विक रूप से नियंत्रित किया जा सकता है।<ref>{{Cite web|title=अनुकूलन विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)|url=https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html|access-date=2022-02-02|website=gcc.gnu.org}}</ref> | ||
फ्यूज्ड मल्टिप्लाई-एड ऑपरेशन को "मल्टिप्लाई-एड फ्यूज्ड" के रूप में IBM [[POWER1]] (1990) प्रोसेसर में प्रस्तुत किया गया था,<ref>{{cite journal |last1=Montoye |first1=R. K. |last2=Hokenek |first2=E. |last3=Runyon |first3=S. L. |title=Design of the IBM RISC System/6000 floating-point execution unit |journal=IBM Journal of Research and Development |date=January 1990 |volume=34 |issue=1 |pages=59–70 |doi=10.1147/rd.341.0059}}{{closed access}}</ref> लेकिन तब से यह बहुत से अन्य प्रोसेसरों में जोड़ा गया है: | |||
* [[ हेवलेट पैकर्ड ]] [[पीए-8000]] (1996) और ऊपर | * [[ हेवलेट पैकर्ड | एचपी]] [[पीए-8000]] (1996) और ऊपर | ||
* | * हिटाची सुपरएच एसएच-4 (1998) | ||
* [[सोनी कंप्यूटर एंटरटेनमेंट]]-[[ तोशीबा ]] [[भावना इंजन]] (1999) | *[[सोनी कंप्यूटर एंटरटेनमेंट|एससीई]]-[[ तोशीबा |तोशीबा]] [[भावना इंजन|इमोशन इंजन]] (1999) | ||
* इंटेल [[इटेनियम]] (2001) | * इंटेल [[इटेनियम]] (2001) | ||
* एसटीआई [[सेल (माइक्रोप्रोसेसर)]] (2006) | *एसटीआई [[सेल (माइक्रोप्रोसेसर)|सेल]] (2006) | ||
* [[ द्रोह ]] [[SPARC64 VI]] (2007) और ऊपर | *[[ द्रोह |फुजित्सु]] [[SPARC64 VI]] (2007) और ऊपर | ||
* ([[एमआईपीएस वास्तुकला]]) [[लूंगसन]]-2एफ (2008)<ref>{{cite web |url=http://www.mdronline.com/mpr/h/2008/1103/224401.html |title=Godson-3 Emulates x86: New MIPS-Compatible Chinese Processor Has Extensions for x86 Translation}}</ref> | *([[एमआईपीएस वास्तुकला|एमआईपीएस-संगत]]) [[लूंगसन]]-2एफ (2008)<ref>{{cite web |url=http://www.mdronline.com/mpr/h/2008/1103/224401.html |title=Godson-3 Emulates x86: New MIPS-Compatible Chinese Processor Has Extensions for x86 Translation}}</ref> | ||
* [[एल्ब्रस-8एस | * [[एल्ब्रस-8एस|एल्ब्रस-8एसवी]] (2018) | ||
* | *FMA3 और/या FMA4 निर्देश सेट के साथ x86 प्रोसेसर | ||
** एएमडी [[बुलडोजर (प्रोसेसर)]] (2011, एफएमए4 केवल) | ** एएमडी [[बुलडोजर (प्रोसेसर)|बुलडोजर]] (2011, एफएमए4 केवल) | ||
** एएमडी [[पाइलड्राइवर (माइक्रोआर्किटेक्चर)]] (2012, एफएमए3 और एफएमए4)<ref>{{cite web |last1=Hollingsworth |first1=Brent |title=नए "बुलडोजर" और "पाइलड्राइवर" निर्देश|url=https://developer.amd.com/resources/developer-guides-manuals/new-bulldozer-and-piledriver-instructions/ |publisher=AMD Developer Central |date=October 2012}}</ref> | **एएमडी [[पाइलड्राइवर (माइक्रोआर्किटेक्चर)|पाइलड्राइवर]] (2012, एफएमए3 और एफएमए4)<ref>{{cite web |last1=Hollingsworth |first1=Brent |title=नए "बुलडोजर" और "पाइलड्राइवर" निर्देश|url=https://developer.amd.com/resources/developer-guides-manuals/new-bulldozer-and-piledriver-instructions/ |publisher=AMD Developer Central |date=October 2012}}</ref> | ||
** एएमडी [[स्टीमरोलर (माइक्रोआर्किटेक्चर)]] (2014) | ** एएमडी [[स्टीमरोलर (माइक्रोआर्किटेक्चर)|स्टीमरोलर]] (2014) | ||
** एएमडी [[ खुदाई यंत्र (माइक्रोआर्किटेक्चर) ]] (2015) | **एएमडी [[ खुदाई यंत्र (माइक्रोआर्किटेक्चर) |उत्खननकर्ता]] (2015) | ||
** एएमडी [[ज़ेन (माइक्रोआर्किटेक्चर)]] (2017, केवल | ** एएमडी [[ज़ेन (माइक्रोआर्किटेक्चर)|ज़ेन]] (2017, FMA3 केवल) | ||
** [[इंटेल हैसवेल]] (2013, एफएमए3 केवल)<ref>{{cite web |url=http://www.reghardware.co.uk/2008/08/19/idf_intel_architecture_roadmap/ |title=Intel adds 22nm octo-core 'Haswell' to CPU design roadmap |work=The Register |access-date=2008-08-19 |archive-url=https://web.archive.org/web/20120217051330/http://www.reghardware.com/2008/08/19/idf_intel_architecture_roadmap/ |archive-date=2012-02-17 |url-status=dead }}</ref> | ** [[इंटेल हैसवेल]] (2013, एफएमए3 केवल)<ref>{{cite web |url=http://www.reghardware.co.uk/2008/08/19/idf_intel_architecture_roadmap/ |title=Intel adds 22nm octo-core 'Haswell' to CPU design roadmap |work=The Register |access-date=2008-08-19 |archive-url=https://web.archive.org/web/20120217051330/http://www.reghardware.com/2008/08/19/idf_intel_architecture_roadmap/ |archive-date=2012-02-17 |url-status=dead }}</ref> | ||
** इंटेल [[स्काईलेक (माइक्रोआर्किटेक्चर)]] (2015, एफएमए3 केवल) | ** इंटेल [[स्काईलेक (माइक्रोआर्किटेक्चर)|स्काईलेक]] (2015, एफएमए3 केवल) | ||
* VFPv4 और/या NEONv2 के साथ ARM प्रोसेसर: | * VFPv4 और/या NEONv2 के साथ ARM प्रोसेसर: | ||
** [[एआरएम कॉर्टेक्स-एम4एफ]] (2010) | ** [[एआरएम कॉर्टेक्स-एम4एफ]] (2010) | ||
** [[एआरएम कॉर्टेक्स-ए5]] (2012) | ** [[एआरएम कॉर्टेक्स-ए5]] (2012) | ||
** [[एआरएम कॉर्टेक्स-ए7 एमपीकोर | ** [[एआरएम कॉर्टेक्स-ए7 एमपीकोर|एआरएम कॉर्टेक्स-ए7]](2013) | ||
** [[एआरएम कॉर्टेक्स-ए15 एमपीकोर | ** [[एआरएम कॉर्टेक्स-ए15 एमपीकोर|एआरएम कॉर्टेक्स-ए15]](2012) | ||
** [[क्रेट (सीपीयू)]] (2012) | ** [[क्रेट (सीपीयू)]] (2012) | ||
**एप्पल A6 (2012) | **एप्पल A6 (2012) | ||
** सभी | ** सभी ARMv8 प्रोसेसर | ||
*** फुजित्सु A64FX में | *** फुजित्सु A64FX में "प्रीफिक्स इंस्ट्रक्शन के साथ चार-ऑपरेंड एफएमए" है। | ||
* [[आईबीएम]] जेड/आर्किटेक्चर (1998 से) | * [[आईबीएम]] जेड/आर्किटेक्चर (1998 से) | ||
* जीपीयू और जीपीजीपीयू बोर्ड: | * जीपीयू और जीपीजीपीयू बोर्ड: | ||
** [[एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची]] (2009) और | ** [[एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एएमडी जीपीयू]] (2009) और नए | ||
*** | *** टेरास्केल 2 "एवरग्रीन"-श्रृंखला आधारित | ||
*** [[ग्राफ़िक्स कोर अगला]] | *** [[ग्राफ़िक्स कोर अगला|ग्राफ़िक्स कोर नेक्स्ट]]-आधारित | ||
** [[एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची]] (2010) और | ** [[एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एनवीडिया जीपीयू]](2010) और नए | ||
*** [[फर्मी (माइक्रोआर्किटेक्चर)]]-आधारित (2010) | *** [[फर्मी (माइक्रोआर्किटेक्चर)|फर्मी]]-आधारित (2010) | ||
*** [[केप्लर (माइक्रोआर्किटेक्चर)]]-आधारित (2012) | *** [[केप्लर (माइक्रोआर्किटेक्चर)|केप्लर]]-आधारित (2012) | ||
*** [[मैक्सवेल (माइक्रोआर्किटेक्चर)]]-आधारित (2014) | *** [[मैक्सवेल (माइक्रोआर्किटेक्चर)|मैक्सवेल]]-आधारित (2014) | ||
*** [[पास्कल (माइक्रोआर्किटेक्चर)]]-आधारित (2016) | *** [[पास्कल (माइक्रोआर्किटेक्चर)|पास्कल]]-आधारित (2016) | ||
*** [[वोल्टा (माइक्रोआर्किटेक्चर)]]-आधारित (2017) | *** [[वोल्टा (माइक्रोआर्किटेक्चर)|वोल्टा]]-आधारित (2017) | ||
** | ** सैंडी ब्रिज के बाद से इंटेल जीपीयू | ||
** [[इंटेल एमआईसी]] (2012) | ** [[इंटेल एमआईसी]] (2012) | ||
** [[माली (जीपीयू)]] (2012) और ऊपर | ** एआरएम [[माली (जीपीयू)|माली]] टी600 सीरीज (2012) और उससे ऊपर | ||
* वेक्टर प्रोसेसर: | * वेक्टर प्रोसेसर: | ||
** [[रूट सी एसएक्स - अरोरा त्सुबासा]] | ** [[रूट सी एसएक्स - अरोरा त्सुबासा|एनईसी एसएक्स-अरोड़ा त्सुबासा]] | ||
* [[ RISC-वी ]] | * [[ RISC-वी |आरआईएससी-वी]] निर्देश सेट (2010) | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 22:26, 30 July 2023
कम्प्यूटिंग में, खासकर डिजिटल सिग्नल प्रोसेसिंग में, मल्टिप्लाई-एक्यूम्युलेट (MAC) या मल्टिप्लाई-एड (MAD) ऑपरेशन एक सामान्य कदम है जो दो नंबरों का गुणन-योग (प्रोडक्ट) करता है और उस प्रोडक्ट को एक एक्यूम्युलेटर में जोड़ता है। ऑपरेशन को करने वाली हार्डवेयर यूनिट को मल्टीप्लाई-एक्यूम्युलेटर (MAC यूनिट) के रूप में जाना जाता है; स्वयं ऑपरेशन को अक्सर एक MAC या MAD ऑपरेशन भी कहा जाता है। MAC ऑपरेशन एक एक्यूम्युलेटर एक a को संशोधित करता है:
फ्लोटिंग पॉइंट नंबरों के साथ काम करने पर, इसे दो गोलाईयों (बहुत से DSP में सामान्य) के साथ किया जा सकता है, या एक गोलाईयों के साथ किया जा सकता है। एकल गोलाईयों के साथ किया जाने पर, इसे फ्यूज्ड मल्टिप्लाई-एड (FMA) या फ्यूज्ड मल्टिप्लाई-एक्यूम्युलेट (FMAC) कहा जाता है।
आधुनिक कंप्यूटर में एक विशेषित MAC (मल्टिप्लाई-एक्यूम्युलेटर) हो सकता है, जिसमें एक कम्बिनेशनल लॉजिक में लागू मल्टिप्लायर, एक एडर और रिजिस्टर होता है जो परिणाम को संग्रहीत करता है। रिजिस्टर का आउटपुट एडर के एक इनपुट में पुनर्वितरण किया जाता है, इस प्रकार प्रत्येक घड़ी के साइकिल पर, मल्टिप्लायर का आउटपुट रजिस्टर में जोड़ा जाता है। कम्बिनेशनल मल्टिप्लायर बड़े मात्रा में लॉजिक की आवश्यकता होती है, लेकिन पहले के कंप्यूटरों के उनके शिफ्टिंग और जोड़ने के तरीके की तुलना में वे उत्पाद को बहुत तेजी से निर्धारित कर सकते हैं। 1909 में पर्सी लज्गेट ने अपनी एनालिटिकल मशीन में पहले MAC की विचारधारा को अभिज्ञात किया था,[1] और विभाजन के लिए पहले MAC का उपयोग किया (जो रूपांतरित श्रृंगांतक्रम (1+x)−1 के माध्यम से प्रारंभिक गुणना उपयुक्त करती थी)। पहले आधुनिक प्रोसेसर जो MAC यूनिट के साथ संपन्न हुए थे, वे डिजिटल सिग्नल प्रोसेसर थे, लेकिन यह तकनीक अब सामान्य उद्देश्य प्रोसेसरों में भी आम हो गई है।[2][3][4][5]
फ़्लोटिंग-पॉइंट अंकगणित में
जब इंटीजर्स के साथ किया जाता है, तो यह ऑपरेशन सामान्य रूप से बिल्कुल सही होता है (किसी दो के घात के साथ की गणना मॉड्यूलो)। हालांकि, फ़्लोटिंग-पॉइंट नंबर्स के पास केवल निश्चित मात्रा में गणितीय सटीकता होती है। अर्थात्, डिजिटल फ्लोटिंग-पॉइंट अंकगणित आम तौर पर गठनशील नहीं होता है और ना ही समानुपाती या वितरक। (फ्लोटिंग पॉइंट§सटीकता समस्याएँ § Notes देखें)। इसलिए, यह फर्क पड़ता है कि परिणाम में क्या अंतर होता है कि क्या दो गोलाईयों के साथ मल्टिप्लाई-एड किया जाता है, या एक ऑपरेशन में एकल गोलाईयों के साथ (फ्यूज्ड मल्टिप्लाई-एड)। आईईईई 754-2008 ने निर्धारित किया है कि इसे एक गोलाईयों के साथ किया जाना चाहिए, जिससे अधिक सटीक परिणाम प्राप्त होता है।[6]
फ़्यूज्ड गुणा-जोड़ें
फ्यूज्ड मल्टिप्लाई-एड (FMA या fmadd)[7] एक फ्लोटिंग-पॉइंट मल्टिप्लाई-एड ऑपरेशन है जो एक ही कदम में किया जाता है और एकल गोलाईयों के साथ होता है। अर्थात्, जहां एक अफ्यूज्ड मल्टिप्लाई-एड गणना b × c का उत्पाद करेगा, उसे N महत्वपूर्ण बिटों में गोलाईयों के साथ देखेगा, फिर इसे a के साथ जोड़ेगा और फिर आखिरी परिणाम को फिर से N महत्वपूर्ण बिटों में गोलाईयों के साथ देखेगा, वहीं एक फ्यूज्ड मल्टिप्लाई-एड भागफलस्वरूप व्यक्ति ने पूरे प्रकार से अभिव्यक्ति a + (b × c) की गणना करेगा और अंतिम परिणाम को N महत्वपूर्ण बिटों में गोलाईयों के साथ देखेगा।
एक तेज़ एफएमए उत्पादों के संचय को शामिल करने वाली कई संगणनाओं की सटीकता को तेज़ और बेहतर कर सकता है:
- अदिश गुणनफल
- मैट्रिक्स गुणन
- बहुपद मूल्यांकन (उदाहरण के लिए, हॉर्नर के नियम के साथ)
- कार्यों के मूल्यांकन के लिए न्यूटन की विधि (व्युत्क्रम फलन से)
- कनवल्शन और कृत्रिम तंत्रिका नेटवर्क
- डबल-डबल अंकगणित में गुणन
फ्यूज्ड मल्टिप्लाई-एड आम तौर पर अधिक सटीक परिणाम देने के लिए भरोसे के लायक होता है। हालांकि, विलियम कहान ने इसका संकेत किया है कि यदि यह बिना सोचे-समझे उपयोग किया जाए तो इससे समस्याएँ हो सकती हैं।[8] यदि x2 − y2 को ((x × x) − y × y) (जिसमें कहान द्वारा सुझाया गया नोटेशन अनुसरण किया जाता है जिसमें अतिरिक्त ब्रैकेट द्वारा कम्पाइलर को दिशा दी जाती है कि पहले (x × x) शब्द को गोलाईयों में देखा जाए) के रूप में फ्यूज्ड मल्टिप्लाई-एड का उपयोग किया जाए, तो परिणाम नकारात्मक हो सकता है, भले ही x = y हो। इसका मतलब है कि पहली गुणना निम्न महत्वपूर्णता बिटों को छोड़ देगी। यदि इसके बाद परिणाम का वर्गमूल निकाला जाए तो यह त्रुटि के लिए कारण बन सकता है।
जब एक माइक्रोप्रोसेसर के अंदर लागू किया जाता है, तो एफएमए एक ऐड के बाद होने वाले मल्टीपल ऑपरेशन से तेज हो सकता है। हालाँकि, मूल IBM RS/6000 डिज़ाइन पर आधारित मानक औद्योगिक कार्यान्वयन के लिए योग की ठीक से गणना करने के लिए 2N-बिट योजक की आवश्यकता होती है।[9]
इस निर्देश को शामिल करने का एक अन्य लाभ यह है कि यह विभाजन (विभाजन एल्गोरिथ्म देखें) और वर्गमूल (वर्गमूल की गणना के तरीके देखें) संचालन के एक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति देता है, इस प्रकार उन कार्यों के लिए समर्पित हार्डवेयर की आवश्यकता समाप्त हो जाती है।[10]
डॉट उत्पाद अनुदेश
विभिन्न मशीनों में कुछ मशीनें कई फ्यूज्ड मल्टिप्लाई-एड ऑपरेशनों को एक स्टेप में संयुक्त करती हैं, उदाहरण के लिए एक 128-बिट SIMD रजिस्टर में a0×b0 + a1×b1 + a2×b2 + a3×b3
के दो चार-घटक डॉट-प्रोडक्ट का एकल साइकिल द्वारा प्रवाहशीलता से प्रदर्शन करती हैं।
समर्थन
एफएमए ऑपरेशन IEEE 754-2008 में शामिल है।
डिजिटल इक्विपमेंट कॉर्पोरेशन (DEC) VAX के POLY
निर्देश का उपयोग गुणा और जोड़ चरणों के क्रम का उपयोग करके हॉर्नर नियम के साथ बहुपदों का मूल्यांकन करने के लिए किया जाता है। निर्देश विवरण यह निर्दिष्ट नहीं करते हैं कि गुणा और जोड़ एक ही एफएमए चरण का उपयोग करके किया जाता है या नहीं।[11] यह निर्देश 1977 में अपने मूल 11/780 कार्यान्वयन के बाद से VAX अनुदेश सेट का एक हिस्सा रहा है।
C प्रोग्रामिंग भाषा की 1999 की मानक एक FMA (फ्यूज्ड मल्टिप्लाई-एड) ऑपरेशन का समर्थन fma() मानक गणितीय पुस्तकालय फ़ंक्शन के माध्यम से करती है और एक गुणन एवं एक जोड़ के पश्चात आपूर्ति की स्वचालित परिवर्तन (फ्लोटिंग-पॉइंट अभिव्यक्तियों का संकुचन), जो मानक प्रग्माओं (#pragma STDC FP_CONTRACT
) के माध्यम से स्पष्ट रूप से सक्षम या अक्षम किया जा सकता है। GCC और Clang C कंपाइलर ऐसे रूपांतरण को उन प्रोसेसर शास्त्रविद्याओं के लिए डिफ़ॉल्ट रूप से करते हैं जो FMA निर्देशिकाएं समर्थन करती हैं। GCC, जिसमें उक्त प्रग्मा का समर्थन नहीं है, [12] इसे -ffp-contract
कमांड लाइन विकल्प से वैश्विक रूप से नियंत्रित किया जा सकता है।[13]
फ्यूज्ड मल्टिप्लाई-एड ऑपरेशन को "मल्टिप्लाई-एड फ्यूज्ड" के रूप में IBM POWER1 (1990) प्रोसेसर में प्रस्तुत किया गया था,[14] लेकिन तब से यह बहुत से अन्य प्रोसेसरों में जोड़ा गया है:
- एचपी पीए-8000 (1996) और ऊपर
- हिटाची सुपरएच एसएच-4 (1998)
- एससीई-तोशीबा इमोशन इंजन (1999)
- इंटेल इटेनियम (2001)
- एसटीआई सेल (2006)
- फुजित्सु SPARC64 VI (2007) और ऊपर
- (एमआईपीएस-संगत) लूंगसन-2एफ (2008)[15]
- एल्ब्रस-8एसवी (2018)
- FMA3 और/या FMA4 निर्देश सेट के साथ x86 प्रोसेसर
- एएमडी बुलडोजर (2011, एफएमए4 केवल)
- एएमडी पाइलड्राइवर (2012, एफएमए3 और एफएमए4)[16]
- एएमडी स्टीमरोलर (2014)
- एएमडी उत्खननकर्ता (2015)
- एएमडी ज़ेन (2017, FMA3 केवल)
- इंटेल हैसवेल (2013, एफएमए3 केवल)[17]
- इंटेल स्काईलेक (2015, एफएमए3 केवल)
- VFPv4 और/या NEONv2 के साथ ARM प्रोसेसर:
- एआरएम कॉर्टेक्स-एम4एफ (2010)
- एआरएम कॉर्टेक्स-ए5 (2012)
- एआरएम कॉर्टेक्स-ए7(2013)
- एआरएम कॉर्टेक्स-ए15(2012)
- क्रेट (सीपीयू) (2012)
- एप्पल A6 (2012)
- सभी ARMv8 प्रोसेसर
- फुजित्सु A64FX में "प्रीफिक्स इंस्ट्रक्शन के साथ चार-ऑपरेंड एफएमए" है।
- आईबीएम जेड/आर्किटेक्चर (1998 से)
- जीपीयू और जीपीजीपीयू बोर्ड:
- एएमडी जीपीयू (2009) और नए
- टेरास्केल 2 "एवरग्रीन"-श्रृंखला आधारित
- ग्राफ़िक्स कोर नेक्स्ट-आधारित
- एनवीडिया जीपीयू(2010) और नए
- सैंडी ब्रिज के बाद से इंटेल जीपीयू
- इंटेल एमआईसी (2012)
- एआरएम माली टी600 सीरीज (2012) और उससे ऊपर
- एएमडी जीपीयू (2009) और नए
- वेक्टर प्रोसेसर:
- आरआईएससी-वी निर्देश सेट (2010)
संदर्भ
- ↑ "लुडगेट की विश्लेषणात्मक मशीन की व्यवहार्यता". Archived from the original on 2019-08-07. Retrieved 2020-08-30.
- ↑ Lyakhov, Pavel; Valueva, Maria; Valuev, Georgii; Nagornov, Nikolai (January 2020). "काटे गए बहु-संचित इकाइयों के आधार पर डिजिटल फ़िल्टर प्रदर्शन को बढ़ाने की एक विधि". Applied Sciences (in English). 10 (24): 9052. doi:10.3390/app10249052.
- ↑ Tung Thanh Hoang; Sjalander, M.; Larsson-Edefors, P. (May 2009). "Double Throughput Multiply-Accumulate unit for FlexCore processor enhancements". 2009 IEEE International Symposium on Parallel & Distributed Processing. pp. 1–7. doi:10.1109/IPDPS.2009.5161212. ISBN 978-1-4244-3751-1. S2CID 14535090.
- ↑ Kang, Jongsung; Kim, Taewhan (2020-03-01). "PV-MAC: Multiply-and-accumulate unit structure exploiting precision variability in on-device convolutional neural networks". Integration (in English). 71: 76–85. doi:10.1016/j.vlsi.2019.11.003. ISSN 0167-9260. S2CID 211264132.
- ↑ "पागल - पी.एस". Retrieved 2021-08-14.
- ↑ Whitehead, Nathan; Fit-Florea, Alex (2011). "Precision & Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs" (PDF). nvidia. Retrieved 2013-08-31.
- ↑ "fmadd instrs". IBM.
- ↑ Kahan, William (1996-05-31). "IEEE Standard 754 for Binary Floating-Point Arithmetic".
- ↑ Quinnell, Eric (May 2007). Floating-Point Fused Multiply–Add Architectures (PDF) (PhD thesis). Retrieved 2011-03-28.
- ↑ Markstein, Peter (November 2004). गोल्डस्मिड्ट के एल्गोरिदम का उपयोग करते हुए सॉफ्टवेयर डिवीजन और स्क्वायर रूट (PDF). 6th Conference on Real Numbers and Computers. CiteSeerX 10.1.1.85.9648.
- ↑ "VAX instruction of the week: POLY". Archived from the original on 2020-02-13.
- ↑ "Bug 20785 - Pragma STDC * (C99 FP) unimplemented". gcc.gnu.org. Retrieved 2022-02-02.
- ↑ "अनुकूलन विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)". gcc.gnu.org. Retrieved 2022-02-02.
- ↑ Montoye, R. K.; Hokenek, E.; Runyon, S. L. (January 1990). "Design of the IBM RISC System/6000 floating-point execution unit". IBM Journal of Research and Development. 34 (1): 59–70. doi:10.1147/rd.341.0059.
- ↑ "Godson-3 Emulates x86: New MIPS-Compatible Chinese Processor Has Extensions for x86 Translation".
- ↑ Hollingsworth, Brent (October 2012). "नए "बुलडोजर" और "पाइलड्राइवर" निर्देश". AMD Developer Central.
- ↑ "Intel adds 22nm octo-core 'Haswell' to CPU design roadmap". The Register. Archived from the original on 2012-02-17. Retrieved 2008-08-19.