सिंगल बनाम डबल फ्लोटिंग-पॉइंट सटीक


13

एकल परिशुद्धता फ़्लोटिंग पॉइंट संख्या आधी मेमोरी लेती हैं और आधुनिक मशीनों (यहां तक ​​कि GPU पर भी ऐसा लगता है) का संचालन उनके साथ दोहरी सटीकता की तुलना में लगभग दोगुनी गति से किया जा सकता है। कई FDTD कोड जो मैंने विशेष रूप से एकल परिशुद्धता अंकगणित और भंडारण का उपयोग किया है। क्या समीकरणों के बड़े पैमाने पर विरल प्रणालियों को हल करने के लिए एकल परिशुद्धता का उपयोग करने के लिए स्वीकार्य होने पर अंगूठे का एक नियम है? मुझे लगता है कि यह भारी रूप से मैट्रिक्स स्थिति संख्या पर निर्भर होना चाहिए।

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

क्या आधुनिक FPU का मूल एकल परिशुद्धता (फ्लोट) से दोहरी परिशुद्धता (डबल) और इसके विपरीत रूपांतरण की अनुमति देता है? या ये महंगे ऑपरेशन हैं?

जवाबों:


7

सभी गैर-तुच्छ समस्याओं के लिए (यानी, उन लोगों के लिए जहां प्रदर्शन मायने रखता है) आपके पास लगभग सभी मेमोरी मैट्रिक्स में होगी, और वेक्टरों में अपेक्षाकृत कम। उदाहरण के लिए, स्टोक्स समीकरण के लिए 3 डी टेलर-हुड तत्वों के लिए, आपके पास मैट्रिक्स में प्रति पंक्ति कुछ सौ तत्व हैं, और यह वैक्टर के लिए आवश्यक स्मृति की मात्रा को बहुत कम कर देता है। हमने इस प्रकार मैट्रिक्स को फ्लोट के रूप में और डबल के रूप में वैक्टर को संग्रहीत करने के विचार के साथ खेला है। मुझे अपने समय के परिणामों की याद नहीं है, लेकिन मुझे यकीन है कि हमने राउंड-ऑफ आदि के साथ कोई समस्या नहीं देखी है, इसलिए यह दृष्टिकोण निश्चित रूप से काम करता है।


धन्यवाद, प्रो बंगरथ पुनरावृत्ति मैट्रिक्स सॉल्वर के बारे में क्या? क्या आप मैट्रिक्स-वेक्टर उत्पादों के लिए दोगुनी सटीकता तक स्केल करते हैं या वेक्टर तत्वों को गुणकों के लिए सिंगल डाउन करते हैं और संचय के लिए दोगुना तक वापस करते हैं?
कॉस्टिस

मैं निश्चित रूप से पुनरावृत्तियों के बारे में बात कर रहा था। हम सभी वैक्टर को डबल प्रिसिजन में करते हैं (क्योंकि इससे कोई फर्क नहीं पड़ता), इसलिए dst = मैट्रिक्स src ऑपरेशन डबल = फ्लोट डबल के रूप में होता है । संचय तब दोहरी सटीकता में होता है, लेकिन अगर यह बिल्कुल भी प्रभावित होता है तो मुझे वास्तव में बहुत आश्चर्य होगा।
वुल्फगैंग बंगर्थ

वहाँ कहीं बाहर कागज (शायद 2 दशक पहले से) यह दर्शाता है कि डॉट उत्पादों को डबल परिशुद्धता से अधिक में किया जाना चाहिए। मेरे पास संदर्भ काम नहीं है, लेकिन मैं देखूंगा कि क्या मैं इसे बाद में पा सकता हूं।
बिल बैर्थ

हाँ, यह मुझे आश्चर्य नहीं करेगा। यह भी मेल खाता है कि हम क्या करते हैं।
वुल्फगैंग बंगर्थ

आप डॉट उत्पादों के लिए क्वाड सटीक का उपयोग करते हैं? यदि हां, तो अच्छा है! मैंने यह नहीं सुना था कि कोई पुस्तकालय में ऐसा कर रहा था।
बिल बर्थ


3

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

मैं सभी प्रदर्शनों को अनियंत्रित रखता हूं और दोहरे में गहराई से विश्लेषण नहीं किया जाता है। विशेष रूप से, मैं पॉलीगॉनल डेटा और ज्यामिति के अन्य विवरण को डबल (शायद संभव हो तो पूर्णांक) में रखूंगा, क्योंकि अनुभव बताता है कि आपको अपने कोड के कम्प्यूटेशनल ज्यामितीय भागों को पूरी तरह से मजबूत कभी नहीं मिलेगा, भले ही यह सिद्धांत रूप में संभव हो।

एक तीसरा भाग जिसे मैं दोहराता हूं, वह है विश्लेषणात्मक संगणना, जिसमें गैर-सममितीय ईजेनवल्यू डीकंपोजिशन का उपयोग करने वाले शॉर्टकट शामिल हैं। एक उदाहरण के रूप में, मेरे पास एक टुकड़ा-दाता परिभाषित घूर्णी सममित 2 डी फ़ंक्शन है, और मुझे इसके फूरियर रूपांतरण की आवश्यकता है। एफएफटी और उचित "विश्लेषणात्मक कम पास फिल्टर" को शामिल करने के विभिन्न संख्यात्मक तरीके होंगे जो इसे "कुशलतापूर्वक" प्राप्त करेंगे। चूँकि यह प्रदर्शन असंवैधानिक है, इसलिए मैंने "सटीक" विश्लेषणात्मक अभिव्यक्ति का इस्तेमाल किया, जिसमें इसके बजाय बेसेल फ़ंक्शन शामिल थे। चूँकि यह शुरू करने का एक शॉर्टकट था, और मैं अपने जटिल सूत्र के त्रुटि प्रसार के विश्लेषण में किसी भी समय खर्च नहीं करूंगा, मैं उस गणना के लिए डबल परिशुद्धता का बेहतर उपयोग करता हूं। (यह अभी भी पता चला है कि सूत्र के लिए केवल कुछ विश्लेषणात्मक समकक्ष अभिव्यक्तियां प्रयोग करने योग्य थीं,

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.