मल्टिप्लाई–एक्यूम्युलेट ऑपरेशन: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Operation common in numerical signal processing}} कम्प्यूटिंग में, विशेष रूप से अंकीय...")
 
No edit summary
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Short description|Operation common in numerical signal processing}}
{{Short description|Operation common in numerical signal processing}}
[[ कम्प्यूटिंग ]] में, विशेष रूप से [[ अंकीय संकेत प्रक्रिया ]] में, गुणा-संचय (मैक) या गुणा-जोड़ (एमएडी) ऑपरेशन एक सामान्य कदम है जो दो संख्याओं के उत्पाद की गणना करता है और उस उत्पाद को एक [[संचायक (कंप्यूटिंग)]] में जोड़ता है। ऑपरेशन करने वाली हार्डवेयर इकाई को गुणक-संचायक (मैक इकाई) के रूप में जाना जाता है; ऑपरेशन को अक्सर MAC या MAD ऑपरेशन भी कहा जाता है। मैक ऑपरेशन एक संचायक ''ए'' को संशोधित करता है:
[[ कम्प्यूटिंग |कम्प्यूटिंग]] में, विशेष रूप से [[ अंकीय संकेत प्रक्रिया |डिजिटल सिग्नल प्रसंस्करण (प्रोसेसिंग)]] में, '''मल्टिप्लाई–एक्यूम्युलेट''' ('''एमएसी''') या '''मल्टिप्लाई–एड''' ('''एमएडी''') संक्रिया एक सामान्य चरण है जो दो संख्याओं का गुणन करता है और उस गुणनफल को [[संचायक (कंप्यूटिंग)|एक्यूम्युलेटर]] में जोड़ता है। संक्रिया करने वाली हार्डवेयर इकाई को '''मल्टीप्लायर–एक्युमुलेटर''' ('''एमएसी यूनिट''') के रूप में जाना जाता है; स्वयं संक्रिया को प्रायः एमएसी या एमएडी संक्रिया भी कहा जाता है। एमएसी संक्रिया एक एक्यूम्युलेटर a को संशोधित करता है:


:<math>\ a \leftarrow a + ( b \times c )</math>
:<math>\ a \leftarrow a + ( b \times c )</math>
जब [[तैरनेवाला स्थल]] नंबरों के साथ किया जाता है, तो इसे दो [[ गोलाई ]] (कई [[डिजिटल सिग्नल प्रोसेसर]] में विशिष्ट), या एक राउंडिंग के साथ किया जा सकता है। जब एकल राउंडिंग के साथ प्रदर्शन किया जाता है, तो इसे फ़्यूज़्ड मल्टीप्ली-ऐड (FMA) या फ़्यूज़्ड मल्टीप्ली-एक्युमुलेट (FMAC) कहा जाता है।
[[तैरनेवाला स्थल|फ्लोटिंग पॉइंट]] संख्याओं के साथ काम करने पर, इसे दो [[ गोलाई |रोउंडिंग्स]] (बहुत से [[डिजिटल सिग्नल प्रोसेसर|DSP]] में सामान्य) के साथ किया जा सकता है, या एक रोउंडिंग्स के साथ किया जा सकता है। एकल रोउंडिंग्स के साथ किया जाने पर, इसे '''फ्यूज्ड मल्टिप्लाई–एड''' ('''एफएमए''') या '''फ्यूज्ड मल्टिप्लाई–एक्यूम्युलेट''' ('''एफएमएसी''') कहा जाता है।


आधुनिक कंप्यूटरों में एक समर्पित मैक हो सकता है, जिसमें [[संयोजन तर्क]] में कार्यान्वित गुणक, उसके बाद एक [[योजक (इलेक्ट्रॉनिक्स)]] और एक संचायक रजिस्टर शामिल होता है जो परिणाम को संग्रहीत करता है। रजिस्टर का आउटपुट योजक के एक इनपुट पर वापस फीड किया जाता है, ताकि प्रत्येक घड़ी चक्र पर, गुणक का आउटपुट रजिस्टर में जोड़ा जा सके। संयोजन गुणक को बड़ी मात्रा में तर्क की आवश्यकता होती है, लेकिन यह पहले के कंप्यूटरों के विशिष्ट [[किसान गुणन]] की तुलना में किसी उत्पाद की अधिक तेज़ी से गणना कर सकता है। [[पर्सी लुडगेट]] 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>}}). मैक इकाइयों से लैस होने वाले पहले आधुनिक प्रोसेसर [[डिजिटल सिग्नल प्रोसेसर]] थे, लेकिन यह तकनीक अब सामान्य प्रयोजन प्रोसेसर में भी आम है।<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>
आधुनिक कंप्यूटर में एक विशेषित एमएसी (मल्टिप्लाई–एक्यूम्युलेटर) हो सकता है, जिसमें एक [[संयोजन तर्क|कम्बिनेशनल लॉजिक]] में लागू मल्टिप्लायर, एक [[योजक (इलेक्ट्रॉनिक्स)|एडर]] और रिजिस्टर होता है जो परिणाम को संग्रहीत करता है। रिजिस्टर का आउटपुट एडर के एक इनपुट में पुनर्वितरण किया जाता है, इस प्रकार प्रत्येक घड़ी के साइकिल पर, मल्टिप्लायर का आउटपुट रजिस्टर में जोड़ा जाता है। कम्बिनेशनल मल्टिप्लायर बड़े मात्रा में लॉजिक की आवश्यकता होती है, लेकिन पहले के कंप्यूटरों के उनके [[किसान गुणन|शिफ्टिंग और जोड़ने के तरीके]] की तुलना में वे उत्पाद को बहुत तेजी से निर्धारित कर सकते हैं। 1909 में [[पर्सी लुडगेट|पर्सी लज्गेट]] ने अपनी एनालिटिकल मशीन में पहले एमएसी की विचारधारा को अभिज्ञात किया था,<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> और विभाजन के लिए पहले एमएसी का उपयोग किया (जो रूपांतरित श्रृंगांतक्रम {{math|(1+''x'')<sup>−1</sup>}} के माध्यम से प्रारंभिक गुणना उपयुक्त करती थी)पहले आधुनिक प्रोसेसर जो एमएसी यूनिट के साथ संपन्न हुए थे, वे [[डिजिटल सिग्नल प्रोसेसर]] थे, लेकिन यह तकनीक अब सामान्य उद्देश्य प्रोसेसरों में भी आम हो गई है।<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|आईईईई 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'' महत्वपूर्ण बिटों में रोउंडिंग्स के साथ देखेगा।


एक तेज़ एफएमए उत्पादों के संचय को सम्मिलित करने वाली कई संगणनाओं की यथार्थता को तेज़ और बेहतर कर सकता है:


==[[फ़्लोटिंग-पॉइंट अंकगणित]] में==
* [[डॉट उत्पाद|अदिश गुणनफल]]
जब [[पूर्णांक]]ों के साथ किया जाता है, तो ऑपरेशन आम तौर पर सटीक होता है ([[दो की शक्ति]] की गणना [[मॉड्यूलर अंकगणित]])। हालाँकि, फ़्लोटिंग-पॉइंट अंकगणित|फ़्लोटिंग-पॉइंट संख्याओं में केवल एक निश्चित मात्रा में गणितीय अंकगणितीय सटीकता होती है। अर्थात्, डिजिटल फ़्लोटिंग-पॉइंट अंकगणित आम तौर पर साहचर्यता या वितरणात्मकता नहीं है। (देखना {{slink|Floating point#Accuracy problems}}.)
* [[मैट्रिक्स गुणन]]
इसलिए, इससे परिणाम पर फर्क पड़ता है कि क्या गुणा-जोड़ दो राउंडिंग के साथ किया जाता है, या एक ऑपरेशन में एकल राउंडिंग (एक फ़्यूज्ड मल्टीप्ली-ऐड) के साथ किया जाता है। [[आईईईई 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>
* [[बहुपद मूल्यांकन]] (उदाहरण के लिए, हॉर्नर के नियम के साथ)
* फलनों के मूल्यांकन के लिए न्यूटन की विधि (व्युत्क्रम फलन से)
*कनवल्शन और कृत्रिम तंत्रिका नेटवर्क
* डबल–डबल अंकगणित में गुणन


फ्यूज्ड मल्टिप्लाई–ऐड सामान्यतः अधिक यथार्थ परिणाम देने पर निर्भर किया जा सकता है। हालांकि, [[विलियम मोर्टों कहाँ|विलियम कहान]] ने इसका संकेत किया है कि यदि यह बिना सोचे–समझे उपयोग किया जाए तो इससे समस्याएँ हो सकती हैं।<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''}} हो। इसका अर्थ है कि पहली गुणना निम्न महत्वपूर्णता बिट को छोड़ देगी। यदि इसके बाद परिणाम का वर्गमूल निकाला जाए तो यह त्रुटि के लिए कारण बन सकता है।


==फ़्यूज्ड गुणा-जोड़ें==
जब एक [[माइक्रोप्रोसेसर]] के अंदर लागू किया जाता है, तो एफएमए एक ऐड के बाद होने वाले मल्टीपल संक्रिया से तेज हो सकता है। हालाँकि, मूल आईबीएम 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>
एक फ़्यूज्ड मल्टीप्ली-ऐड (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''}}, इसे एन महत्वपूर्ण बिट्स तक गोल करें, परिणाम को ए में जोड़ें, और एन महत्वपूर्ण बिट्स पर वापस राउंड करें, एक फ़्यूज्ड मल्टीप्ल-ऐड संपूर्ण अभिव्यक्ति की गणना करेगा {{math|''a'' + (''b'' × ''c'')}}अंतिम परिणाम को एन महत्वपूर्ण बिट्स तक पूर्णांकित करने से पहले इसकी पूर्ण सटीकता तक।


एक तेज़ एफएमए उत्पादों के संचय से जुड़ी कई संगणनाओं की गति को बढ़ा सकता है और उनकी सटीकता में सुधार कर सकता है:
इस निर्देश को सम्मिलित करने का एक अन्य लाभ यह है कि यह विभाजन ([[विभाजन एल्गोरिथ्म]] देखें) और [[वर्गमूल]] (वर्गमूल की गणना के तरीके देखें) संचालन के एक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति देता है, इस प्रकार उन कार्यों के लिए समर्पित हार्डवेयर की आवश्यकता समाप्त हो जाती है।<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–बिट एसआईएमडी रजिस्टर में <code>a0×b0 + a1×b1 + a2×b2 + a3×b3</code> के दो चार–घटक डॉट–गुणनफल का एकल साइकिल द्वारा प्रवाहशीलता से प्रदर्शन करती हैं।
* [[बहुपद मूल्यांकन]] (उदाहरण के लिए, हॉर्नर के नियम के साथ)
* कार्यों के मूल्यांकन के लिए न्यूटन की विधि (उल्टे फ़ंक्शन से)
*संकल्प और कृत्रिम तंत्रिका नेटवर्क
* चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप में गुणन#डबल-डबल अंकगणित|डबल-डबल अंकगणित


अधिक सटीक परिणाम देने के लिए फ़्यूज्ड मल्टीप्ली-ऐड पर आमतौर पर भरोसा किया जा सकता है। हालाँकि, [[विलियम मोर्टों कहाँ]] ने बताया है कि अगर बिना सोचे-समझे इस्तेमाल किया जाए तो यह समस्याएँ दे सकता है।<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''}} पहले गुणन के कारण कम महत्व वाले बिट्स को हटा दिया गया। उदाहरण के लिए, यदि परिणाम के वर्गमूल का मूल्यांकन किया जाता है तो इससे त्रुटि हो सकती है।
===आलम्बन===
एफएमए संक्रिया आईईईई 754–2008 में सम्मिलित है।


जब एक [[माइक्रोप्रोसेसर]] के अंदर लागू किया जाता है, तो एक एफएमए एक ऐड के बाद मल्टीपल ऑपरेशन से तेज हो सकता है। हालाँकि, मूल 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>
[[डिजिटल उपकरण निगम|डिजिटल इक्विपमेंट कॉर्पोरेशन]] (डीईसी) [[वैक्स|वीएएक्स]] के <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 कार्यान्वयन के बाद से वीएएक्स अनुदेश सेट का एक हिस्सा रहा है।
इस निर्देश को शामिल करने का एक अन्य लाभ यह है कि यह विभाजन (गणित) ([[विभाजन एल्गोरिथ्म]] देखें) और [[वर्गमूल]] (वर्गमूल की गणना के तरीके देखें) संचालन के एक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति देता है, इस प्रकार उन कार्यों के लिए समर्पित हार्डवेयर की आवश्यकता समाप्त हो जाती है।<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>


===डॉट उत्पाद अनुदेश===
C प्रोग्रामिंग लैंग्वेज की 1999 की मानक एक एफएमए (फ्यूज्ड मल्टिप्लाई–एड) संक्रिया का समर्थन fma() मानक गणितीय पुस्तकालय फ़ंक्शन के माध्यम से करती है और एक गुणन एवं एक जोड़ के पश्चात आपूर्ति की स्वचालित परिवर्तन (फ्लोटिंग–पॉइंट अभिव्यक्तियों का संकुचन), जो मानक प्रग्माओं ({{code|#pragma STDC FP_CONTRACT}}) के माध्यम से स्पष्ट रूप से सक्षम या अक्षम किया जा सकता है। [[जीएनयू कंपाइलर संग्रह|जीसीसी]] और [[बजना|क्लांग]] C कंपाइलर ऐसे रूपांतरण को उन प्रोसेसर शास्त्रविद्याओं के लिए डिफ़ॉल्ट रूप से करते हैं जो एफएमए निर्देशिकाएं समर्थन करती हैं। जीसीसी, जिसमें उक्त प्रग्मा का समर्थन नहीं है, <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>
कुछ मशीनें कई फ़्यूज्ड मल्टीपल ऐड ऑपरेशंस को एक ही चरण में जोड़ती हैं, उदाहरण के लिए। दो 128-बिट एकल निर्देश, एकाधिक डेटा रजिस्टरों पर चार-तत्व डॉट-उत्पाद का प्रदर्शन करना <code>a0×b0 + a1×b1 + a2×b2 + a3×b3</code> एकल चक्र थ्रूपुट के साथ।


===समर्थन===
फ्यूज्ड मल्टिप्लाई–एड संक्रिया को "मल्टिप्लाई–एड फ्यूज्ड" के रूप में आईबीएम [[POWER1|पावर1]] (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> लेकिन तब से यह बहुत से अन्य प्रोसेसरों में जोड़ा गया है:
एफएमए ऑपरेशन आईईईई 754-2008 में शामिल है।


[[डिजिटल उपकरण निगम]] (डीईसी) [[वैक्स]] <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 निर्देश सेट का एक हिस्सा रहा है।
* [[ हेवलेट पैकर्ड | एचपी]] [[पीए-8000|पीए–8000]] (1996) और ऊपर
 
* हिटाची सुपरएच एसएच–4 (1998)
C (प्रोग्रामिंग भाषा) का [[C99]] इसके माध्यम से FMA ऑपरेशन का समर्थन करता है <code>fma()</code> मानक गणित लाइब्रेरी फ़ंक्शन और गुणन का स्वचालित परिवर्तन जिसके बाद एक जोड़ (फ़्लोटिंग-पॉइंट अभिव्यक्तियों का संकुचन) होता है, जिसे मानक प्रागमास के साथ स्पष्ट रूप से सक्षम या अक्षम किया जा सकता है ({{code|#pragma STDC FP_CONTRACT}}). [[जीएनयू कंपाइलर संग्रह]] और [[बजना]] सी कंपाइलर प्रोसेसर आर्किटेक्चर के लिए डिफ़ॉल्ट रूप से ऐसे परिवर्तन करते हैं जो एफएमए निर्देशों का समर्थन करते हैं। जीसीसी के साथ, जो उपर्युक्त व्यावहारिकता का समर्थन नहीं करता है,<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>
*[[सोनी कंप्यूटर एंटरटेनमेंट|एससीई]][[ तोशीबा |तोशीबा]] [[भावना इंजन|इमोशन इंजन]] (1999)
फ़्यूज्ड मल्टीप्ली-ऐड ऑपरेशन को 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) और ऊपर
* हिताची, लिमिटेड सुपरएच#एसएच-4|सुपरएच एसएच-4 (1998)
* [[सोनी कंप्यूटर एंटरटेनमेंट]]-[[ तोशीबा ]] [[भावना इंजन]] (1999)
* इंटेल [[इटेनियम]] (2001)
* इंटेल [[इटेनियम]] (2001)
* एसटीआई [[सेल (माइक्रोप्रोसेसर)]] (2006)
*एसटीआई [[सेल (माइक्रोप्रोसेसर)|सेल]] (2006)
* [[ द्रोह ]] [[SPARC64 VI]] (2007) और ऊपर
*[[ द्रोह |फुजित्सु]] [[SPARC64 VI|एसपीएआरसी64 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एसवी (2018)
* [[एल्ब्रस-8एस|एल्ब्रस–8एसवी]] (2018)
* एफएमए निर्देश सेट के साथ x86 प्रोसेसर|एफएमए3 और/या एफएमए4 निर्देश सेट
*एफएमए3 और/या एफएमए4 निर्देश सेट के साथ 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, केवल एफएमए3)
** एएमडी [[ज़ेन (माइक्रोआर्किटेक्चर)|ज़ेन]] (2017, एफएमए3 केवल)
** [[इंटेल हैसवेल]] (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एफ|एआरएम कॉर्टेक्स–एम4एफ]] (2010)
** [[एआरएम कॉर्टेक्स-ए5]] (2012)
** [[एआरएम कॉर्टेक्स-ए5|एआरएम कॉर्टेक्स–ए5]] (2012)
** [[एआरएम कॉर्टेक्स-ए7 एमपीकोर]]|एआरएम कॉर्टेक्स-ए7 (2013)
** [[एआरएम कॉर्टेक्स-ए7 एमपीकोर|एआरएम कॉर्टेक्स–ए7]](2013)
** [[एआरएम कॉर्टेक्स-ए15 एमपीकोर]]|एआरएम कॉर्टेक्स-ए15 (2012)
** [[एआरएम कॉर्टेक्स-ए15 एमपीकोर|एआरएम कॉर्टेक्स–ए15]](2012)
** [[क्रेट (सीपीयू)]] (2012)
** [[क्रेट (सीपीयू)]] (2012)
**एप्पल A6 (2012)
**एप्पल ए6 (2012)
** सभी ARM आर्किटेक्चर#Armv8-A प्रोसेसर
** सभी एआरएमवी8 प्रोसेसर
*** फुजित्सु A64FX में प्रीफ़िक्स इंस्ट्रक्शन के साथ चार-ऑपरेंड FMA है।
*** फुजित्सु ए64एफएक्स में "प्रीफिक्स इंस्ट्रक्शन के साथ चार–ऑपरेंड एफएमए" है।
* [[आईबीएम]] जेड/आर्किटेक्चर (1998 से)
* [[आईबीएम]] जेड/आर्किटेक्चर (1998 से)
* जीपीयू और जीपीजीपीयू बोर्ड:
* जीपीयू और जीपीजीपीयू बोर्ड:
** [[एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची]] (2009) और नई
** [[एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एएमडी जीपीयू]] (2009) और नए
*** टेरास्केल (माइक्रोआर्किटेक्चर)#टेरास्केल 2|टेरास्केल 2 सदाबहार -श्रृंखला आधारित
*** टेरास्केल 2 "एवरग्रीन"–श्रृंखला आधारित
*** [[ग्राफ़िक्स कोर अगला]]
*** [[ग्राफ़िक्स कोर अगला|ग्राफ़िक्स कोर नेक्स्ट]]–आधारित
** [[एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची]] (2010) और नई
** [[एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एनवीडिया जीपीयू]](2010) और नए
*** [[फर्मी (माइक्रोआर्किटेक्चर)]]-आधारित (2010)
*** [[फर्मी (माइक्रोआर्किटेक्चर)|फर्मी]]–आधारित (2010)
*** [[केप्लर (माइक्रोआर्किटेक्चर)]]-आधारित (2012)
*** [[केप्लर (माइक्रोआर्किटेक्चर)|केप्लर]]–आधारित (2012)
*** [[मैक्सवेल (माइक्रोआर्किटेक्चर)]]-आधारित (2014)
*** [[मैक्सवेल (माइक्रोआर्किटेक्चर)|मैक्सवेल]]–आधारित (2014)
*** [[पास्कल (माइक्रोआर्किटेक्चर)]]-आधारित (2016)
*** [[पास्कल (माइक्रोआर्किटेक्चर)|पास्कल]]–आधारित (2016)
*** [[वोल्टा (माइक्रोआर्किटेक्चर)]]-आधारित (2017)
*** [[वोल्टा (माइक्रोआर्किटेक्चर)|वोल्टा]]–आधारित (2017)
** Intel HD और Iris ग्राफ़िक्स#सैंडी ब्रिज के बाद से Intel GPU
** सैंडी ब्रिज के बाद से इंटेल जीपीयू
** [[इंटेल एमआईसी]] (2012)
** [[इंटेल एमआईसी]] (2012)
** [[माली (जीपीयू)]] (2012) और ऊपर
** एआरएम [[माली (जीपीयू)|माली]] टी600 सीरीज (2012) और उससे ऊपर
* वेक्टर प्रोसेसर:
* वेक्टर प्रोसेसर:
** [[रूट सी एसएक्स - अरोरा त्सुबासा]]
** [[रूट सी एसएक्स - अरोरा त्सुबासा|एनईसी एसएक्स–अरोड़ा त्सुबासा]]
* [[ RISC-वी ]]ी अनुदेश सेट (2010)
* [[ RISC-वी |आरआईएससी–वी]] निर्देश सेट (2010)


==संदर्भ==
==संदर्भ==
{{Reflist}}
{{Reflist}}
{{Graphics Processing Unit}}
{{DEFAULTSORT:Multiply-accumulate operation}}
 
{{DEFAULTSORT:Multiply-accumulate operation}}[[Category: कंप्यूटर अंकगणित]] [[Category: अंकीय संकेत प्रक्रिया]]
 
 


[[Category: Machine Translated Page]]
[[Category:CS1 English-language sources (en)]]
[[Category:Created On 25/07/2023]]
[[Category:Created On 25/07/2023|Multiply-accumulate operation]]
[[Category:Lua-based templates|Multiply-accumulate operation]]
[[Category:Machine Translated Page|Multiply-accumulate operation]]
[[Category:Pages with script errors|Multiply-accumulate operation]]
[[Category:Short description with empty Wikidata description|Multiply-accumulate operation]]
[[Category:Templates Vigyan Ready|Multiply-accumulate operation]]
[[Category:Templates that add a tracking category|Multiply-accumulate operation]]
[[Category:Templates that generate short descriptions|Multiply-accumulate operation]]
[[Category:Templates using TemplateData|Multiply-accumulate operation]]
[[Category:अंकीय संकेत प्रक्रिया|Multiply-accumulate operation]]
[[Category:कंप्यूटर अंकगणित|Multiply-accumulate operation]]

Latest revision as of 11:05, 7 August 2023

कम्प्यूटिंग में, विशेष रूप से डिजिटल सिग्नल प्रसंस्करण (प्रोसेसिंग) में, मल्टिप्लाई–एक्यूम्युलेट (एमएसी) या मल्टिप्लाई–एड (एमएडी) संक्रिया एक सामान्य चरण है जो दो संख्याओं का गुणन करता है और उस गुणनफल को एक्यूम्युलेटर में जोड़ता है। संक्रिया करने वाली हार्डवेयर इकाई को मल्टीप्लायर–एक्युमुलेटर (एमएसी यूनिट) के रूप में जाना जाता है; स्वयं संक्रिया को प्रायः एमएसी या एमएडी संक्रिया भी कहा जाता है। एमएसी संक्रिया एक एक्यूम्युलेटर a को संशोधित करता है:

फ्लोटिंग पॉइंट संख्याओं के साथ काम करने पर, इसे दो रोउंडिंग्स (बहुत से DSP में सामान्य) के साथ किया जा सकता है, या एक रोउंडिंग्स के साथ किया जा सकता है। एकल रोउंडिंग्स के साथ किया जाने पर, इसे फ्यूज्ड मल्टिप्लाई–एड (एफएमए) या फ्यूज्ड मल्टिप्लाई–एक्यूम्युलेट (एफएमएसी) कहा जाता है।

आधुनिक कंप्यूटर में एक विशेषित एमएसी (मल्टिप्लाई–एक्यूम्युलेटर) हो सकता है, जिसमें एक कम्बिनेशनल लॉजिक में लागू मल्टिप्लायर, एक एडर और रिजिस्टर होता है जो परिणाम को संग्रहीत करता है। रिजिस्टर का आउटपुट एडर के एक इनपुट में पुनर्वितरण किया जाता है, इस प्रकार प्रत्येक घड़ी के साइकिल पर, मल्टिप्लायर का आउटपुट रजिस्टर में जोड़ा जाता है। कम्बिनेशनल मल्टिप्लायर बड़े मात्रा में लॉजिक की आवश्यकता होती है, लेकिन पहले के कंप्यूटरों के उनके शिफ्टिंग और जोड़ने के तरीके की तुलना में वे उत्पाद को बहुत तेजी से निर्धारित कर सकते हैं। 1909 में पर्सी लज्गेट ने अपनी एनालिटिकल मशीन में पहले एमएसी की विचारधारा को अभिज्ञात किया था,[1] और विभाजन के लिए पहले एमएसी का उपयोग किया (जो रूपांतरित श्रृंगांतक्रम (1+x)−1 के माध्यम से प्रारंभिक गुणना उपयुक्त करती थी)। पहले आधुनिक प्रोसेसर जो एमएसी यूनिट के साथ संपन्न हुए थे, वे डिजिटल सिग्नल प्रोसेसर थे, लेकिन यह तकनीक अब सामान्य उद्देश्य प्रोसेसरों में भी आम हो गई है।[2][3][4][5]

फ़्लोटिंग–पॉइंट अंकगणित में

जब पूर्णांकों के साथ किया जाता है, तो संक्रिया सामान्यतः यथार्थ होती है (दो के घात के साथ की गणना मॉड्यूलो)। हालांकि, फ़्लोटिंग–पॉइंट संख्याओं के पास केवल निश्चित मात्रा में गणितीय यथार्थता होती है। अर्थात्, डिजिटल फ्लोटिंग–पॉइंट अंकगणित आम तौर पर गठनशील नहीं होता है और ना ही समानुपाती या वितरक। (फ्लोटिंग पॉइंट§सटीकता समस्याएँ § Notes देखें)। इसलिए, यह फर्क पड़ता है कि परिणाम में क्या अंतर होता है कि क्या दो रोउंडिंग्स के साथ मल्टिप्लाई–एड किया जाता है, या एक संक्रिया में एकल रोउंडिंग्स के साथ (फ्यूज्ड मल्टिप्लाई–एड)। आईईईई 754–2008 ने निर्धारित किया है कि इसे एक रोउंडिंग्स के साथ किया जाना चाहिए, जिससे अधिक यथार्थ परिणाम प्राप्त होता है।[6]

फ्यूज्ड मल्टिप्लाई–एड

फ्यूज्ड मल्टिप्लाई–एड (FMA या fmadd)[7] एक फ्लोटिंग–पॉइंट मल्टिप्लाई–एड संक्रिया है जो एक ही कदम में किया जाता है और एकल रोउंडिंग्स के साथ होता है। अर्थात्, जहां एक अफ्यूज्ड मल्टिप्लाई–एड गणना b × c का गुणन करेगा, उसे N महत्वपूर्ण बिटों में रोउंडिंग्स के साथ देखेगा, फिर इसे a के साथ जोड़ेगा और फिर आखिरी परिणाम को फिर से N महत्वपूर्ण बिटों में रोउंडिंग्स के साथ देखेगा, वहीं एक फ्यूज्ड मल्टिप्लाई–एड भागफलस्वरूप व्यक्ति ने पूरे प्रकार से अभिव्यक्ति a + (b × c) की गणना करेगा और अंतिम परिणाम को N महत्वपूर्ण बिटों में रोउंडिंग्स के साथ देखेगा।

एक तेज़ एफएमए उत्पादों के संचय को सम्मिलित करने वाली कई संगणनाओं की यथार्थता को तेज़ और बेहतर कर सकता है:

फ्यूज्ड मल्टिप्लाई–ऐड सामान्यतः अधिक यथार्थ परिणाम देने पर निर्भर किया जा सकता है। हालांकि, विलियम कहान ने इसका संकेत किया है कि यदि यह बिना सोचे–समझे उपयोग किया जाए तो इससे समस्याएँ हो सकती हैं।[8] यदि x2y2 को ((x × x) − y × y) (जिसमें कहान द्वारा सुझाया गया नोटेशन अनुसरण किया जाता है जिसमें अतिरिक्त ब्रैकेट द्वारा कम्पाइलर को दिशा दी जाती है कि पहले (x × x) शब्द को रोउंडिंग्स में देखा जाए) के रूप में फ्यूज्ड मल्टिप्लाई–एड का उपयोग किया जाए, तो परिणाम नकारात्मक हो सकता है, भले ही x = y हो। इसका अर्थ है कि पहली गुणना निम्न महत्वपूर्णता बिट को छोड़ देगी। यदि इसके बाद परिणाम का वर्गमूल निकाला जाए तो यह त्रुटि के लिए कारण बन सकता है।

जब एक माइक्रोप्रोसेसर के अंदर लागू किया जाता है, तो एफएमए एक ऐड के बाद होने वाले मल्टीपल संक्रिया से तेज हो सकता है। हालाँकि, मूल आईबीएम RS/6000 डिज़ाइन पर आधारित मानक औद्योगिक कार्यान्वयन के लिए योग की ठीक से गणना करने के लिए 2N–बिट योजक की आवश्यकता होती है।[9]

इस निर्देश को सम्मिलित करने का एक अन्य लाभ यह है कि यह विभाजन (विभाजन एल्गोरिथ्म देखें) और वर्गमूल (वर्गमूल की गणना के तरीके देखें) संचालन के एक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति देता है, इस प्रकार उन कार्यों के लिए समर्पित हार्डवेयर की आवश्यकता समाप्त हो जाती है।[10]

अदिश गुणनफल निर्देश

विभिन्न मशीनों में कुछ मशीनें कई फ्यूज्ड मल्टिप्लाई–एड संक्रियाों को एक स्टेप में संयुक्त करती हैं, उदाहरण के लिए एक 128–बिट एसआईएमडी रजिस्टर में a0×b0 + a1×b1 + a2×b2 + a3×b3 के दो चार–घटक डॉट–गुणनफल का एकल साइकिल द्वारा प्रवाहशीलता से प्रदर्शन करती हैं।

आलम्बन

एफएमए संक्रिया आईईईई 754–2008 में सम्मिलित है।

डिजिटल इक्विपमेंट कॉर्पोरेशन (डीईसी) वीएएक्स के POLY निर्देश का उपयोग गुणा और जोड़ चरणों के क्रम का उपयोग करके हॉर्नर नियम के साथ बहुपदों का मूल्यांकन करने के लिए किया जाता है। निर्देश विवरण यह निर्दिष्ट नहीं करते हैं कि गुणा और जोड़ एक ही एफएमए चरण का उपयोग करके किया जाता है या नहीं।[11] यह निर्देश 1977 में अपने मूल 11/780 कार्यान्वयन के बाद से वीएएक्स अनुदेश सेट का एक हिस्सा रहा है।

C प्रोग्रामिंग लैंग्वेज की 1999 की मानक एक एफएमए (फ्यूज्ड मल्टिप्लाई–एड) संक्रिया का समर्थन fma() मानक गणितीय पुस्तकालय फ़ंक्शन के माध्यम से करती है और एक गुणन एवं एक जोड़ के पश्चात आपूर्ति की स्वचालित परिवर्तन (फ्लोटिंग–पॉइंट अभिव्यक्तियों का संकुचन), जो मानक प्रग्माओं (#pragma STDC FP_CONTRACT) के माध्यम से स्पष्ट रूप से सक्षम या अक्षम किया जा सकता है। जीसीसी और क्लांग C कंपाइलर ऐसे रूपांतरण को उन प्रोसेसर शास्त्रविद्याओं के लिए डिफ़ॉल्ट रूप से करते हैं जो एफएमए निर्देशिकाएं समर्थन करती हैं। जीसीसी, जिसमें उक्त प्रग्मा का समर्थन नहीं है, [12] इसे –ffp–contract कमांड लाइन विकल्प से वैश्विक रूप से नियंत्रित किया जा सकता है।[13]

फ्यूज्ड मल्टिप्लाई–एड संक्रिया को "मल्टिप्लाई–एड फ्यूज्ड" के रूप में आईबीएम पावर1 (1990) प्रोसेसर में प्रस्तुत किया गया था,[14] लेकिन तब से यह बहुत से अन्य प्रोसेसरों में जोड़ा गया है:

संदर्भ

  1. "लुडगेट की विश्लेषणात्मक मशीन की व्यवहार्यता". Archived from the original on 2019-08-07. Retrieved 2020-08-30.
  2. Lyakhov, Pavel; Valueva, Maria; Valuev, Georgii; Nagornov, Nikolai (January 2020). "काटे गए बहु-संचित इकाइयों के आधार पर डिजिटल फ़िल्टर प्रदर्शन को बढ़ाने की एक विधि". Applied Sciences (in English). 10 (24): 9052. doi:10.3390/app10249052.
  3. 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.
  4. 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.
  5. "पागल - पी.एस". Retrieved 2021-08-14.
  6. Whitehead, Nathan; Fit-Florea, Alex (2011). "Precision & Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs" (PDF). nvidia. Retrieved 2013-08-31.
  7. "fmadd instrs". IBM.
  8. Kahan, William (1996-05-31). "IEEE Standard 754 for Binary Floating-Point Arithmetic".
  9. Quinnell, Eric (May 2007). Floating-Point Fused Multiply–Add Architectures (PDF) (PhD thesis). Retrieved 2011-03-28.
  10. Markstein, Peter (November 2004). गोल्डस्मिड्ट के एल्गोरिदम का उपयोग करते हुए सॉफ्टवेयर डिवीजन और स्क्वायर रूट (PDF). 6th Conference on Real Numbers and Computers. CiteSeerX 10.1.1.85.9648.
  11. "VAX instruction of the week: POLY". Archived from the original on 2020-02-13.
  12. "Bug 20785 - Pragma STDC * (C99 FP) unimplemented". gcc.gnu.org. Retrieved 2022-02-02.
  13. "अनुकूलन विकल्प (जीएनयू कंपाइलर संग्रह (जीसीसी) का उपयोग करके)". gcc.gnu.org. Retrieved 2022-02-02.
  14. 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.closed access
  15. "Godson-3 Emulates x86: New MIPS-Compatible Chinese Processor Has Extensions for x86 Translation".
  16. Hollingsworth, Brent (October 2012). "नए "बुलडोजर" और "पाइलड्राइवर" निर्देश". AMD Developer Central.
  17. "Intel adds 22nm octo-core 'Haswell' to CPU design roadmap". The Register. Archived from the original on 2012-02-17. Retrieved 2008-08-19.