2012-09-14 12 views
9

मैंने CUDA C++ का उपयोग करके क्षैतिज या लंबवत छवि को मिरर करने के लिए एक बेवकूफ फ़ंक्शन विकसित किया।एनपीपी कार्यों को पूरी तरह अनुकूलित नहीं कर रहे हैं?

तब मुझे पता चला कि NVIDIA प्रदर्शन प्रिमिटिव लाइब्रेरी भी छवि मिरर के लिए एक समारोह प्रदान करता है आया था।

बस तुलना के लिए, मैंने एनपीपी के खिलाफ अपना कार्यकाल का समय दिया। आश्चर्य की बात है, मेरे समारोह से बेहतर प्रदर्शन (हालांकि एक छोटे मार्जिन से, लेकिन अभी भी ...)।

मैं साथ ही Windows टाइमर का उपयोग, CUDA टाइमर द्वारा परिणाम कई बार की पुष्टि की।

मेरा प्रश्न यह है कि: एनपीआईडीआई जीपीयू के लिए एनपीपी कार्यों को पूरी तरह से अनुकूलित नहीं किया गया है?

मैं CUDA 5.0 का उपयोग कर रहा हूँ, GeForce GTX460M (कंप्यूट 2.1), और विकास के लिए Windows 8।

+0

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

+0

मैंने 4 प्रकार की छवियों और 2 अलग-अलग आकारों पर परीक्षण किया। 8 बिट, 16 बिट, 1 चैनल, 3 चैनल, (1280 x 720), (1920 x 1080)। मुझे आकार के 16 बिट एकल चैनल छवि (1280 x 720) में अधिकतम गति मिली, जो एनपीपी के बाद 18.75 प्रतिशत तेज था। – sgarizvi

+1

आप सही हैं कि एनपीपी के प्रदर्शन की कमी है। मुझे सीयूडीए छवि प्रसंस्करण करने के लिए वहां बेहतर पुस्तकालय मिल गए हैं। मुझे व्यक्तिगत रूप से ऐरेफ़ीयर के इमेज प्रोसेसिंग चयन पसंद हैं और इसे तेजी से पाया गया है, http://www.accelereyes.com/arrayfire/c/group__image__mat.htm अन्य लोगों ने ओपनसीवी की जीपीयू सुविधाओं का उपयोग करने की सूचना दी है, हालांकि मैंने महान चीजें नहीं सुनी हैं उसके बारे में। पाकिस्तान में ट्यूनैकोड में कुछ सामान भी है। –

उत्तर

9

मुझे इस उत्तर को पोस्ट करके कोई वोट नहीं मिलने का जोखिम है। :)

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

एक तरफ एक के रूप में, मैं किसी भी पुस्तकालय कभी "पूरी तरह से अनुकूलित" किया जा सकता है नहीं लगता है। बड़े और बढ़ते हार्डवेयर बेस पर समर्थन करने के लिए एक बड़ी लाइब्रेरी के साथ, इसे अनुकूलित करने के लिए काम कभी नहीं किया जाता है! :)

हम कोशिश करते हैं और NVIDIA पुस्तकालयों को पछाड़ने के लिए जारी करने के लिए लोगों को प्रोत्साहित करते हैं क्योंकि समग्र यह कला के राज्य अग्रिम और कंप्यूटिंग पारिस्थितिकी तंत्र लाभ पहुंचता है।

+3

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