2010-08-28 7 views
13

fma(a,b,c)a*b+c के समतुल्य है इसके अलावा यह मध्यवर्ती परिणाम के दौर में नहीं है।कौन से एल्गोरिदम को मिश्रित गुणा से अधिक लाभ मिलता है?

क्या आप मुझे एल्गोरिदम के कुछ उदाहरण दे सकते हैं जो इस राउंडिंग से बचने से गैर-लाभकारी रूप से लाभान्वित होते हैं?

यह स्पष्ट नहीं है, गुणा के बाद गोल करने के रूप में हम जो भी नहीं करते हैं, उसके बाद गोल करने से कम समस्याग्रस्त हो जाते हैं।

उत्तर

5

taw एक महत्वपूर्ण उदाहरण पर मारा; अधिक आम तौर पर, एफएमए लाइब्रेरी लेखकों को सही गोल करने के साथ कई अन्य फ़्लोटिंग-पॉइंट ऑपरेशंस को कुशलतापूर्वक कार्यान्वित करने की अनुमति देता है।

उदाहरण के लिए, एक प्लेटफार्म जिसमें एफएमए है, इसे सही ढंग से गोलाकार विभाजन और वर्ग रूट (पीपीसी और इटेनियम ने इस दृष्टिकोण को लागू करने के लिए) का उपयोग कर सकते हैं, जिससे एफपीयू मूल रूप से एकमात्र उद्देश्य वाली एफएमए मशीन बनने देता है। पीटर टैंग और जॉन हैरिसन (इंटेल), और पीटर मार्कस्टीन (एचपी) के कुछ कागजात हैं जो इस उत्सुकता को समझते हैं यदि आप उत्सुक हैं।

उदाहरण taw त्रुटि त्रुटि को ट्रैक करने में अधिक व्यापक रूप से उपयोगी है। यह आपको दो फ़्लोटिंग पॉइंट नंबरों के उत्पाद को दो फ़्लोटिंग पॉइंट नंबरों के योग के रूप में किसी गोल करने की त्रुटि के बिना प्रस्तुत करने की अनुमति देता है; यह सही ढंग से गोल फ्लोटिंग पॉइंट लाइब्रेरी फ़ंक्शंस को कार्यान्वित करने में काफी उपयोगी है। जीन-मिशेल मुलर की किताब या crlibm पर कागजात इन उपयोगों के बारे में अधिक जानने के लिए अच्छी शुरुआत स्थान होंगे।

एफएमए कुछ प्रकार के तर्कों के लिए गणित-पुस्तकालय शैली के दिनचर्या में तर्क में कमी में व्यापक रूप से उपयोगी है; जब कोई तर्क कम कर रहा है, तो गणना का लक्ष्य अक्सर (x - a*b) रूप का एक शब्द होता है, जहां (a*b) एक्स के बराबर लगभग बराबर होता है; विशेष रूप से, परिणाम (a*b) अवधि में गोल करने की त्रुटि के क्रम पर होता है, यदि यह एफएमए के बिना गणना की जाती है। मेरा मानना ​​है कि मुलर ने इसके बारे में कुछ भी अपनी पुस्तक में लिखा है।

1

मेरे सिर के ऊपर बंद - मैट्रिक्स गुणन, न्यूटन के नियम, बहुपद मूल्यांकन, संख्यात्मक तरीके

2

FMA के प्राथमिक लाभ यह है कि यह दो बार के रूप में तेजी से हो सकता है। गुणा के लिए 1 चक्र और फिर जोड़ने के लिए 1 चक्र लेने के बजाय, एफपीयू एक ही चक्र में दोनों परिचालन जारी कर सकता है। जाहिर है, अधिकांश एल्गोरिदम तेजी से संचालन से लाभान्वित होंगे।

+2

प्रश्न, राउंडिंग के प्रभाव के बारे में है नहीं इस बारे में। आपका उत्तर भी गलत है क्योंकि एफएमए को मानक 2 इनपुट के बजाय 3 इनपुट फ़्लोटिंग पॉइंट यूनिट की आवश्यकता होती है, फ्लोटिंग पॉइंट रजिस्टर फ़ाइल में अतिरिक्त पोर्ट, और व्यापक फ़्लोटिंग पॉइंट एडर्स यह मुफ़्त नहीं है, यह कुछ की लागत पर एफएमए समर्थन का व्यापार-बंद है अन्य हार्डवेयर – taw

+0

टाव: आपने पूछा कि एफएमए से क्या एल्गोरिदम लाभान्वित हैं और कुछ उदाहरणों के लिए जहां गोलाकार एक गैर-तुच्छ लाभ है। मैंने पहले भाग का जवाब दिया, जो कि अधिकांश एल्गोरिदम लाभान्वित होंगे। – Gabe

2

कुछ उदाहरण: वेक्टर डॉट उत्पाद। फूरियर बदलता है। अंकीय संकेत प्रक्रिया। बहुपदों। हर तरह की चीजें।

यह ऑप्टिमाइज़ेशन और हार्डवेयर शोषण का एक और सवाल है जो कुछ और है। संख्यात्मक तरीकों में उत्पादों का एक योग एक बहुत ही सामान्य आवश्यकता है, और इस तरह आप संकलक को एक स्पष्ट निर्देश देते हैं कि चीज को तेजी से कैसे करें और शायद थोड़ा और सटीकता के साथ। जब तक मैं गलत नहीं हूं, संकलक एक एफएमए निर्देश के साथ एक = बी * सी + डी को प्रतिस्थापित करने के लिए स्वतंत्र है, लेकिन यह भी निःशुल्क नहीं है। (जब तक कि गोल करने के लिए मानक कॉल न हो, लेकिन असली दुनिया के कंपाइलर नियमित रूप से छोटे तरीकों से मानकों का उल्लंघन करते हैं)।

+1

संकलक कानूनी रूप से बी * सी + डी को एफएमए के साथ प्रतिस्थापित नहीं कर सकता है जबतक कि आप विशेष रूप से संकलक को यह नहीं बताते कि यह ठीक है (-फैस्ट-गणित या कुछ समान), क्योंकि यह परिणाम को परेशान करता है। –

+0

@ स्टीफनलिन: मान लीजिए कि 'बी',' सी', और 'डी' का मूल्यांकन राज्य को म्यूटेट नहीं करता है या अन्य साइड इफेक्ट्स नहीं है, ऐसे हार्डवेयर अनुकूलन" परेशान परिणाम "कैसे हो सकते हैं? – stakx

+0

@stakx: फ़्लोटिंग-पॉइंट निर्देश सेट में समग्र निर्देशों में से कई वहां हैं क्योंकि राउंडिंग त्रुटि परिणाम को स्वैप कर देगी। उदाहरण: यदि आप ई^(क्लोज-टू-शून्य) लेते हैं तो परिणाम एक के करीब होता है, लेकिन यह आपके परिशुद्धता को बहुत सीमित करता है। यदि आपके पास e^epsilon-1 का प्रतिनिधित्व करने वाला एक निर्देश है, तो हार्डवेयर बहुत अधिक सटीकता दे सकता है। किसी दिए गए उच्च स्तरीय भाषा को अधिक सटीक निर्देश तक पहुंच प्रदान करने या पहचानने योग्य परिस्थितियों में अभिव्यक्ति वृक्ष को फिर से लिखने के लिए परिभाषित किया जा सकता है। पूर्व अधिक अनुमानित है। – Ian

4

एकमात्र चीज जिसे मैंने अभी तक पाया है "त्रुटि मुक्त परिवर्तन" हैं। a+b, a-b, और a*b से किसी भी फ़्लोटिंग पॉइंट नंबर त्रुटियों के लिए फ्लोटिंग पॉइंट नंबर भी हैं (निकटतम मोड में, कोई ओवरफ़्लो/अंडरफ्लो इत्यादि नहीं मानते हैं)।

अतिरिक्त (और स्पष्ट रूप से घटाव) त्रुटि गणना करना आसान है; यदि abs(a) >= abs(b), त्रुटि वास्तव में b-((a+b)-a) (2 फ्लॉप, या 4-5 है यदि हम नहीं जानते कि कौन सा बड़ा है)। गुणात्मक त्रुटि fma के साथ गणना करने के लिए तुच्छ है - यह केवल fma(a,b,-a*b) है। fma के बिना यह बदसूरत कोड की 16 फ्लॉप है। और सही ढंग से गोलाकार fma का पूर्ण जेनेरिक इम्यूलेशन उससे भी धीमा है।

असली गणना के प्रति फ्लॉप त्रुटि त्रुटि के अतिरिक्त 16 फ्लॉप एक विशाल ओवरकिल है, लेकिन केवल 1-5 पाइपलाइन-अनुकूल फ्लॉप के साथ यह काफी उचित है, और त्रुटि ट्रैकिंग के उस 50% -200% ओवरहेड के आधार पर कई एल्गोरिदम के लिए और मुआवजे के परिणाम छोटे से गलती के रूप में होते हैं जैसे कि सभी गणनाएं कई मामलों में बीमारियों की संख्या से दोगुना हो जाती हैं, कई मामलों में बीमारियों से परहेज करते हैं।

दिलचस्प बात यह है fma कभी इन एल्गोरिदम में परिणाम की गणना करने के लिए, बस त्रुटियों को खोजने के लिए, नहीं किया जाता क्योंकि fma की त्रुटि खोजने गुणन की त्रुटि खोजने के रूप में एक धीमी गति से fma बिना किया गया है।

खोज करने के लिए प्रासंगिक कीवर्ड "मुआवजा हॉर्नर योजना" और "मुआवजा डॉट उत्पाद" होगा, हॉर्नर योजना के साथ बहुत अधिक लाभ होगा।

+0

मुझे आश्चर्य है कि 'फ्लोट' मानों पर एफएमए की हार्डवेयर लागत एक ऑपरेशन की हार्डवेयर लागत के साथ तुलना करेगी, जिसमें दो 'फ्लोट' मानों के पूर्ण-परिशुद्धता उत्पाद को 'डबल' में जोड़ा गया था। मेरी समझ से, 'डबल' गुणा की लागत हार्डवेयर एक समान रूप से तेज़ 'फ्लोट' की चार गुना से अधिक है जो पूर्ण-परिशुद्धता परिणाम प्रदान करता है, और कई संचालन जैसे डॉट-उत्पाद के लिए मध्यवर्ती मूल्यों को बनाए रखने के लिए आवश्यक है ऑपरेंड या अंतिम परिणाम की तुलना में सटीकता। एक गुणा और एफएमए का उपयोग एक साथ काम कर सकता है, लेकिन एक एफ * एफ + डी ऑपरेशन का उपयोग करना दो गुना तेजी से प्रतीत होता है। – supercat

1

यह बहुत अच्छी तरह से Wikipedia entry for FMA पर समझाया गया है कि एल्गोरिदम, जो उत्पादों की संचय FMA का उपयोग करने से लाभ सबसे के साथ क्या करना कुछ है:

A fast FMA can speed up and improve the accuracy of 
many computations that involve the accumulation of products: 

* Dot product 
* Matrix multiplication 
* Polynomial evaluation (e.g., with Horner's rule) 
* Newton's method for evaluating functions. 
संबंधित मुद्दे