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

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


 * $$\ a \leftarrow a + ( b \times c )$$

जब तैरनेवाला स्थल नंबरों के साथ किया जाता है, तो इसे दो गोलाई  (कई डिजिटल सिग्नल प्रोसेसर में विशिष्ट), या एक राउंडिंग के साथ किया जा सकता है। जब एकल राउंडिंग के साथ प्रदर्शन किया जाता है, तो इसे फ़्यूज़्ड मल्टीप्ली-ऐड (FMA) या फ़्यूज़्ड मल्टीप्ली-एक्युमुलेट (FMAC) कहा जाता है।

आधुनिक कंप्यूटरों में एक समर्पित मैक हो सकता है, जिसमें संयोजन तर्क में कार्यान्वित गुणक, उसके बाद एक योजक (इलेक्ट्रॉनिक्स) और एक संचायक रजिस्टर शामिल होता है जो परिणाम को संग्रहीत करता है। रजिस्टर का आउटपुट योजक के एक इनपुट पर वापस फीड किया जाता है, ताकि प्रत्येक घड़ी चक्र पर, गुणक का आउटपुट रजिस्टर में जोड़ा जा सके। संयोजन गुणक को बड़ी मात्रा में तर्क की आवश्यकता होती है, लेकिन यह पहले के कंप्यूटरों के विशिष्ट किसान गुणन की तुलना में किसी उत्पाद की अधिक तेज़ी से गणना कर सकता है। पर्सी लुडगेट 1909 की अपनी विश्लेषणात्मक मशीन में MAC की कल्पना करने वाले पहले व्यक्ति थे, और विभाजन के लिए MAC का उपयोग करने वाले पहले (अभिसरण श्रृंखला के माध्यम से पारस्परिक आधार पर गुणन का उपयोग करके) $(1+x)^{−1}$). मैक इकाइयों से लैस होने वाले पहले आधुनिक प्रोसेसर डिजिटल सिग्नल प्रोसेसर थे, लेकिन यह तकनीक अब सामान्य प्रयोजन प्रोसेसर में भी आम है।

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

फ़्यूज्ड गुणा-जोड़ें
एक फ़्यूज्ड मल्टीप्ली-ऐड (FMA या fmadd) एक फ़्लोटिंग-पॉइंट मल्टीप्ली-ऐड ऑपरेशन है जो एक ही राउंडिंग के साथ एक चरण में किया जाता है। यानी, जहां एक अप्रयुक्त गुणा-जोड़ उत्पाद की गणना करेगा $b × c$, इसे एन महत्वपूर्ण बिट्स तक गोल करें, परिणाम को ए में जोड़ें, और एन महत्वपूर्ण बिट्स पर वापस राउंड करें, एक फ़्यूज्ड मल्टीप्ल-ऐड संपूर्ण अभिव्यक्ति की गणना करेगा $a + (b × c)$अंतिम परिणाम को एन महत्वपूर्ण बिट्स तक पूर्णांकित करने से पहले इसकी पूर्ण सटीकता तक।

एक तेज़ एफएमए उत्पादों के संचय से जुड़ी कई संगणनाओं की गति को बढ़ा सकता है और उनकी सटीकता में सुधार कर सकता है:


 * डॉट उत्पाद
 * मैट्रिक्स गुणन
 * बहुपद मूल्यांकन (उदाहरण के लिए, हॉर्नर के नियम के साथ)
 * कार्यों के मूल्यांकन के लिए न्यूटन की विधि (उल्टे फ़ंक्शन से)
 * संकल्प और कृत्रिम तंत्रिका नेटवर्क
 * चौगुनी-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप में गुणन#डबल-डबल अंकगणित|डबल-डबल अंकगणित

अधिक सटीक परिणाम देने के लिए फ़्यूज्ड मल्टीप्ली-ऐड पर आमतौर पर भरोसा किया जा सकता है। हालाँकि, विलियम मोर्टों कहाँ ने बताया है कि अगर बिना सोचे-समझे इस्तेमाल किया जाए तो यह समस्याएँ दे सकता है। अगर $x^{2} − y^{2}$ के रूप में मूल्यांकन किया जाता है $((x × x) − y × y)$ (कहान के सुझाए गए नोटेशन के बाद जिसमें अनावश्यक कोष्ठक संकलक को गोल करने के लिए निर्देशित करते हैं $(x × x)$ टर्म पहले) फ़्यूज्ड मल्टीप्ली-ऐड का उपयोग करते हुए, तब भी परिणाम नकारात्मक हो सकता है $x = y$ पहले गुणन के कारण कम महत्व वाले बिट्स को हटा दिया गया। उदाहरण के लिए, यदि परिणाम के वर्गमूल का मूल्यांकन किया जाता है तो इससे त्रुटि हो सकती है।

जब एक माइक्रोप्रोसेसर के अंदर लागू किया जाता है, तो एक एफएमए एक ऐड के बाद मल्टीपल ऑपरेशन से तेज हो सकता है। हालाँकि, मूल IBM RS/6000 डिज़ाइन पर आधारित मानक औद्योगिक कार्यान्वयन के लिए योग की उचित गणना करने के लिए 2N-बिट योजक की आवश्यकता होती है। इस निर्देश को शामिल करने का एक अन्य लाभ यह है कि यह विभाजन (गणित) (विभाजन एल्गोरिथ्म देखें) और वर्गमूल (वर्गमूल की गणना के तरीके देखें) संचालन के एक कुशल सॉफ्टवेयर कार्यान्वयन की अनुमति देता है, इस प्रकार उन कार्यों के लिए समर्पित हार्डवेयर की आवश्यकता समाप्त हो जाती है।

डॉट उत्पाद अनुदेश
कुछ मशीनें कई फ़्यूज्ड मल्टीपल ऐड ऑपरेशंस को एक ही चरण में जोड़ती हैं, उदाहरण के लिए। दो 128-बिट एकल निर्देश, एकाधिक डेटा रजिस्टरों पर चार-तत्व डॉट-उत्पाद का प्रदर्शन करना  एकल चक्र थ्रूपुट के साथ।

समर्थन
एफएमए ऑपरेशन आईईईई 754-2008 में शामिल है।

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

C (प्रोग्रामिंग भाषा) का C99 इसके माध्यम से FMA ऑपरेशन का समर्थन करता है  मानक गणित लाइब्रेरी फ़ंक्शन और गुणन का स्वचालित परिवर्तन जिसके बाद एक जोड़ (फ़्लोटिंग-पॉइंट अभिव्यक्तियों का संकुचन) होता है, जिसे मानक प्रागमास के साथ स्पष्ट रूप से सक्षम या अक्षम किया जा सकता है (#pragma STDC FP_CONTRACT). जीएनयू कंपाइलर संग्रह और बजना सी कंपाइलर प्रोसेसर आर्किटेक्चर के लिए डिफ़ॉल्ट रूप से ऐसे परिवर्तन करते हैं जो एफएमए निर्देशों का समर्थन करते हैं। जीसीसी के साथ, जो उपर्युक्त व्यावहारिकता का समर्थन नहीं करता है, इसे विश्व स्तर पर नियंत्रित किया जा सकता है  कमांड लाइन विकल्प. फ़्यूज्ड मल्टीप्ली-ऐड ऑपरेशन को IBM POWER1 (1990) प्रोसेसर में मल्टीप्ली-ऐड फ़्यूज़ के रूप में पेश किया गया था, लेकिन तब से इसे कई अन्य प्रोसेसरों में जोड़ा गया है:


 * हेवलेट पैकर्ड पीए-8000 (1996) और ऊपर
 * हिताची, लिमिटेड सुपरएच#एसएच-4|सुपरएच एसएच-4 (1998)
 * सोनी कंप्यूटर एंटरटेनमेंट- तोशीबा भावना इंजन (1999)
 * इंटेल इटेनियम (2001)
 * एसटीआई सेल (माइक्रोप्रोसेसर) (2006)
 * द्रोह SPARC64 VI (2007) और ऊपर
 * (एमआईपीएस वास्तुकला) लूंगसन-2एफ (2008)
 * एल्ब्रस-8एस|एल्ब्रस-8एसवी (2018)
 * एफएमए निर्देश सेट के साथ x86 प्रोसेसर|एफएमए3 और/या एफएमए4 निर्देश सेट
 * एएमडी बुलडोजर (प्रोसेसर) (2011, एफएमए4 केवल)
 * एएमडी पाइलड्राइवर (माइक्रोआर्किटेक्चर) (2012, एफएमए3 और एफएमए4)
 * एएमडी स्टीमरोलर (माइक्रोआर्किटेक्चर) (2014)
 * एएमडी खुदाई यंत्र (माइक्रोआर्किटेक्चर)  (2015)
 * एएमडी ज़ेन (माइक्रोआर्किटेक्चर) (2017, केवल एफएमए3)
 * इंटेल हैसवेल (2013, एफएमए3 केवल)
 * इंटेल स्काईलेक (माइक्रोआर्किटेक्चर) (2015, एफएमए3 केवल)
 * VFPv4 और/या NEONv2 के साथ ARM प्रोसेसर:
 * एआरएम कॉर्टेक्स-एम4एफ (2010)
 * एआरएम कॉर्टेक्स-ए5 (2012)
 * एआरएम कॉर्टेक्स-ए7 एमपीकोर|एआरएम कॉर्टेक्स-ए7 (2013)
 * एआरएम कॉर्टेक्स-ए15 एमपीकोर|एआरएम कॉर्टेक्स-ए15 (2012)
 * क्रेट (सीपीयू) (2012)
 * एप्पल A6 (2012)
 * सभी ARM आर्किटेक्चर#Armv8-A प्रोसेसर
 * फुजित्सु A64FX में प्रीफ़िक्स इंस्ट्रक्शन के साथ चार-ऑपरेंड FMA है।
 * आईबीएम जेड/आर्किटेक्चर (1998 से)
 * जीपीयू और जीपीजीपीयू बोर्ड:
 * एएमडी ग्राफिक्स प्रोसेसिंग इकाइयों की सूची (2009) और नई
 * टेरास्केल (माइक्रोआर्किटेक्चर)#टेरास्केल 2|टेरास्केल 2 सदाबहार -श्रृंखला आधारित
 * ग्राफ़िक्स कोर अगला
 * एनवीडिया ग्राफिक्स प्रोसेसिंग इकाइयों की सूची (2010) और नई
 * फर्मी (माइक्रोआर्किटेक्चर)-आधारित (2010)
 * केप्लर (माइक्रोआर्किटेक्चर)-आधारित (2012)
 * मैक्सवेल (माइक्रोआर्किटेक्चर)-आधारित (2014)
 * पास्कल (माइक्रोआर्किटेक्चर)-आधारित (2016)
 * वोल्टा (माइक्रोआर्किटेक्चर)-आधारित (2017)
 * Intel HD और Iris ग्राफ़िक्स#सैंडी ब्रिज के बाद से Intel GPU
 * इंटेल एमआईसी (2012)
 * माली (जीपीयू) (2012) और ऊपर
 * वेक्टर प्रोसेसर:
 * रूट सी एसएक्स - अरोरा त्सुबासा
 * RISC-वी ी अनुदेश सेट (2010)