2009-09-18 17 views
7

पर उच्च परिशुद्धता गणित मैं एचएलएसएल का उपयोग कर जीपीयू पर एक एल्गोरिदम लागू करने में रूचि रखता हूं, लेकिन मेरी मुख्य चिंताओं में से एक यह है कि मुझे सटीक स्तर की सटीकता चाहिए। 64 बिट परिशुद्धता और उच्च अनुकरण करने के लिए वहां तकनीकें हैं जिन्हें GPU पर लागू किया जा सकता है।जीपीयू

धन्यवाद!

उत्तर

10

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

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

आखिरकार, एचएलएसएल क्यों और सीयूडीए या ओपनसीएल जैसी गणना-आधारित भाषा क्यों नहीं?

+0

कोड पुनरावृत्त फ्रैक्टल सिस्टम को संसाधित करने के लिए होगा, इसलिए इसे लगातार उच्च परिशुद्धता की आवश्यकता है। मैं एक सीपीयू पर प्रसंस्करण बनाम प्रदर्शन वृद्धि की तलाश में हूं। और जहां तक ​​सीयूडीए और ओपनसीएल, मैं एचएलएसएल एटीएम से ज्यादा परिचित हूं। हालांकि मैं इसे CUDA में करने पर विचार कर रहा हूं। मैंने पहले CUDA में डब किया है, लेकिन मैं नहीं कह सकता कि मैं कहीं भी कुशल हूं। – Mark

+2

यदि आपको लगातार उच्च परिशुद्धता की आवश्यकता है, तो वर्तमान में सीपीयू पर चलने वाले अच्छी तरह लिखित कोड को हरा करना असंभव है। आपका समय शायद सीपीयू पर निष्पादन प्रोफाइलिंग और ट्यूनिंग प्रदर्शन में बेहतर खर्च किया गया है। –

+0

यह नहीं कि GPGPU कोड लिखना अपनी योग्यता पर सार्थक नहीं है, बस आप वास्तव में ऐसा कुछ चुनना चाहते हैं जहां आप हार्डवेयर को ऐसा करने की कोशिश नहीं करेंगे जो इसे डिज़ाइन नहीं किया गया है। –

0

अति स्ट्रीम एसडीके कुछ देशी डबल परिशुद्धता का समर्थन करता है, लेकिन यह एचएलएसएल नहीं है।

  • नहीं सभी GPUs, डबल परिशुद्धता हार्डवेयर है की तरह HD केवल उच्च अंत कार्ड 4870
  • नहीं सभी डबल परिशुद्धता संचालन उपलब्ध हैं:

    कैच कि कर रहे हैं। उदाहरण के लिए, कोई विभाजित निर्देश नहीं।

ओपनसीएल एक विस्तार के रूप में डबल परिशुद्धता का समर्थन करेगा, लेकिन यह अभी भी बीटा में है।

+0

ओपनसीएल बीटा में नहीं है; spec के कुछ व्यक्तिगत कार्यान्वयन बीटा में हैं, लेकिन ओपनसीएल एक मानक है, एक विशिष्ट कार्यान्वयन नहीं। SnowLeopard में ओएसएक्स के लिए एक गैर-बीटा कार्यान्वयन भी है। –

+0

@stephentyrone। आप सही हे। लेकिन जहां तक ​​मैं ओपनसीएल के सभी * कार्यान्वयन * को जानता हूं जो जीपीयू * (सीपीयू नहीं) पर डबल परिशुद्धता * का समर्थन करते हैं, अभी भी विकास में हैं। मुझे स्नोलोपर्ड में क्या है और समर्थित नहीं है इसका कोई पहला ज्ञान नहीं है। अगर मुझे गलत जानकारी मिली है, तो कृपया विवरण पोस्ट करें। –

5

दो फ्लोट्स (यानी एकल परिशुद्धता मान) का उपयोग करके, आप परिशुद्धता के लगभग 56-बिट प्राप्त कर सकते हैं। यह एक डबल की परिशुद्धता तक पहुंचता है, लेकिन इस "डबल सिंगल" डेटा प्रकार के लिए आप जिन परिचालनों को कार्यान्वित कर सकते हैं, वे धीमे हैं और युगल का उपयोग करने से कम सटीक हैं। हालांकि, सरल अंकगणितीय परिचालनों के लिए, वे आमतौर पर पर्याप्त होते हैं।

यह paper विचार के बारे में कुछ बात करता है और गुणात्मक संचालन को कार्यान्वित करने का वर्णन करता है। संचालन की एक और पूरी सूची के लिए आप प्रदर्शन कर सकते हैं और उन्हें कैसे कार्यान्वित कर सकते हैं, DSFUN90 पैकेज here देखें। पैकेज फोरट्रान 9 0 में लिखा गया है, लेकिन इसका अनुवाद किसी भी परिशुद्धता संख्या में किया जा सकता है। सावधान रहें कि वाणिज्यिक उद्देश्यों के लिए इसका उपयोग करने के लिए आपको उनसे पुस्तकालय लाइसेंस देना होगा। मेरा मानना ​​है कि मेर्सन-ट्विस्टर सीयूडीए डेमो एप्लिकेशन में अतिरिक्त और गुणात्मक संचालन के लिए कार्यान्वयन भी है।

+0

मुझे CUDA 4.2+ में मेर्सन ट्विस्टर एसडीके डेमो में इससे संबंधित कुछ भी दिखाई नहीं देता है। –

2

यह एक थोड़ा विषय से हटकर जवाब है, लेकिन अगर आप देखना चाहते हैं कि आपकी समस्या एकल परिशुद्धता गणित के कुछ कार्यों स्विचन से प्रभावित किया जा रहा है चाहते हैं, आप अंतराल अंकगणित का उपयोग कर अनुभव को मापने के लिए बारे में सोचना चाहिए अनिश्चितता सीमाएं जब आप विभिन्न तरीकों से परिशुद्धता मिश्रण करते हैं।बूस्ट में एक अंतराल अंकगणितीय पुस्तकालय है जिसे मैंने एक बार मौजूदा सी ++ वैज्ञानिक कोड का उपयोग करने के लिए उपयोग किया था: इसका उपयोग करना काफी आसान था।

लेकिन चेतावनी दी जानी चाहिए: अंतराल अंकगणितीय कुख्यात निराशावादी है: यानी यह कभी-कभी सीमाओं को अतिरंजित करता है। एफ़िन अंकगणित बेहतर होना चाहिए, लेकिन मुझे इसके लिए उपयोग करने योग्य लाइब्रेरी नहीं मिली।

संबंधित मुद्दे