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

From Vigyanwiki
(minor changes)
(Work done)
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 को संशोधित करता है:
[[ कम्प्यूटिंग |कम्प्यूटिंग]] में, विशेष रूप से [[ अंकीय संकेत प्रक्रिया |डिजिटल सिग्नल प्रसंस्करण (प्रोसेसिंग)]] में, '''मल्टिप्लाई–एक्यूम्युलेट''' ('''एमएसी''') या '''मल्टिप्लाई–एड''' ('''एमएडी''') संक्रिया एक सामान्य चरण है जो दो संख्याओं का गुणन करता है और उस गुणनफल को [[संचायक (कंप्यूटिंग)|एक्यूम्युलेटर]] में जोड़ता है। संक्रिया करने वाली हार्डवेयर इकाई को '''मल्टीप्लायर–एक्युमुलेटर''' ('''एमएसी यूनिट''') के रूप में जाना जाता है; स्वयं संक्रिया को प्रायः एमएसी या एमएडी संक्रिया भी कहा जाता है। एमएसी संक्रिया एक एक्यूम्युलेटर a को संशोधित करता है:


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


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


===समर्थन===
===आलम्बन===
एफएमए ऑपरेशन IEEE 754-2008 में शामिल है।
एफएमए संक्रिया आईईईई 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 अनुदेश सेट का एक हिस्सा रहा है।
[[डिजिटल उपकरण निगम|डिजिटल इक्विपमेंट कॉर्पोरेशन]] (डीईसी) [[वैक्स|वीएएक्स]] के <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 कार्यान्वयन के बाद से वीएएक्स अनुदेश सेट का एक हिस्सा रहा है।


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>
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>


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


* [[ हेवलेट पैकर्ड | एचपी]] [[पीए-8000]] (1996) और ऊपर
* [[ हेवलेट पैकर्ड | एचपी]] [[पीए-8000|पीए–8000]] (1996) और ऊपर
* हिटाची सुपरएच एसएच-4 (1998)
* हिटाची सुपरएच एसएच–4 (1998)
*[[सोनी कंप्यूटर एंटरटेनमेंट|एससीई]]-[[ तोशीबा |तोशीबा]] [[भावना इंजन|इमोशन इंजन]] (1999)
*[[सोनी कंप्यूटर एंटरटेनमेंट|एससीई]][[ तोशीबा |तोशीबा]] [[भावना इंजन|इमोशन इंजन]] (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)
*FMA3 और/या FMA4 निर्देश सेट के साथ x86 प्रोसेसर
*एफएमए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, FMA3 केवल)
** एएमडी [[ज़ेन (माइक्रोआर्किटेक्चर)|ज़ेन]] (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)
** सभी ARMv8 प्रोसेसर
** सभी एआरएमवी8 प्रोसेसर
*** फुजित्सु A64FX में "प्रीफिक्स इंस्ट्रक्शन के साथ चार-ऑपरेंड एफएमए" है।
*** फुजित्सु ए64एफएक्स में "प्रीफिक्स इंस्ट्रक्शन के साथ चार–ऑपरेंड एफएमए" है।
* [[आईबीएम]] जेड/आर्किटेक्चर (1998 से)
* [[आईबीएम]] जेड/आर्किटेक्चर (1998 से)
* जीपीयू और जीपीजीपीयू बोर्ड:
* जीपीयू और जीपीजीपीयू बोर्ड:
** [[एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एएमडी जीपीयू]] (2009) और नए
** [[एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एएमडी जीपीयू]] (2009) और नए
*** टेरास्केल 2 "एवरग्रीन"-श्रृंखला आधारित
*** टेरास्केल 2 "एवरग्रीन"–श्रृंखला आधारित
*** [[ग्राफ़िक्स कोर अगला|ग्राफ़िक्स कोर नेक्स्ट]]-आधारित
*** [[ग्राफ़िक्स कोर अगला|ग्राफ़िक्स कोर नेक्स्ट]]–आधारित
** [[एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एनवीडिया जीपीयू]](2010) और नए
** [[एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची|एनवीडिया जीपीयू]](2010) और नए
*** [[फर्मी (माइक्रोआर्किटेक्चर)|फर्मी]]-आधारित (2010)
*** [[फर्मी (माइक्रोआर्किटेक्चर)|फर्मी]]–आधारित (2010)
*** [[केप्लर (माइक्रोआर्किटेक्चर)|केप्लर]]-आधारित (2012)
*** [[केप्लर (माइक्रोआर्किटेक्चर)|केप्लर]]–आधारित (2012)
*** [[मैक्सवेल (माइक्रोआर्किटेक्चर)|मैक्सवेल]]-आधारित (2014)
*** [[मैक्सवेल (माइक्रोआर्किटेक्चर)|मैक्सवेल]]–आधारित (2014)
*** [[पास्कल (माइक्रोआर्किटेक्चर)|पास्कल]]-आधारित (2016)
*** [[पास्कल (माइक्रोआर्किटेक्चर)|पास्कल]]–आधारित (2016)
*** [[वोल्टा (माइक्रोआर्किटेक्चर)|वोल्टा]]-आधारित (2017)
*** [[वोल्टा (माइक्रोआर्किटेक्चर)|वोल्टा]]–आधारित (2017)
** सैंडी ब्रिज के बाद से इंटेल जीपीयू
** सैंडी ब्रिज के बाद से इंटेल जीपीयू
** [[इंटेल एमआईसी]] (2012)
** [[इंटेल एमआईसी]] (2012)
** एआरएम [[माली (जीपीयू)|माली]] टी600 सीरीज (2012) और उससे ऊपर
** एआरएम [[माली (जीपीयू)|माली]] टी600 सीरीज (2012) और उससे ऊपर
* वेक्टर प्रोसेसर:
* वेक्टर प्रोसेसर:
** [[रूट सी एसएक्स - अरोरा त्सुबासा|एनईसी एसएक्स-अरोड़ा त्सुबासा]]
** [[रूट सी एसएक्स - अरोरा त्सुबासा|एनईसी एसएक्स–अरोड़ा त्सुबासा]]
* [[ RISC-वी |आरआईएससी-वी]] निर्देश सेट (2010)
* [[ RISC-वी |आरआईएससी–वी]] निर्देश सेट (2010)


==संदर्भ==
==संदर्भ==

Revision as of 14:49, 31 July 2023

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

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

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

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

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

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

फ्यूज्ड मल्टिप्लाई–एड (एफएमए या एफएमएडीडी)[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.