मैं दिनों के लिए CUDA कर्नेल के साथ प्रयोग किया गया है (लेकिन मैं यह भी आयाम भिन्न हो सकता है) और एक 500x500 छवि के बीच एक तेजी से 2 डी घुमाव के प्रदर्शन एक बहुत छोटे से 2 डी कर्नेल में (एक laplacian 2 डी कर्नेल, तो यह एक 3x3 कर्नेल है .. सभी cuda धागे के साथ एक बड़ा फायदा लेने के लिए बहुत छोटा)।CUDA छोटे गिरी 2 डी घुमाव - कैसे करना है यह
मैंने एक सीपीयू क्लासिक कार्यान्वयन बनाया है (लूप के लिए दो, जैसा कि आप सोचेंगे उतना आसान) और फिर मैंने CUDA कर्नेल बनाना शुरू कर दिया।
में कुछ निराशाजनक प्रयासों के बाद एक तेजी से घुमाव मैं इस कोड के साथ समाप्त हो गया प्रदर्शन करने के लिए: http://www.evl.uic.edu/sjames/cs525/final.html (साझा मेमोरी अनुभाग देखें), यह मूल रूप से एक 16x16 धागे लोड सभी घुमाव के डेटा वह साझा स्मृति में की जरूरत को ब्लॉक कर देता है और फिर दृढ़ संकल्प करता है।
कुछ भी नहीं, सीपीयू अभी भी बहुत तेज़ है। मैंने एफएफटी दृष्टिकोण की कोशिश नहीं की क्योंकि सीयूडीए एसडीके का कहना है कि यह बड़े कर्नेल आकारों के साथ कुशल है।
या नहीं, तुम सब कुछ मैंने लिखा पढ़ा, मेरे सवाल यह है:
कैसे मैं एक अपेक्षाकृत बड़े छवि और CUDA के साथ एक बहुत छोटे से गिरी (3x3) के बीच एक तेज 2 डी घुमाव के प्रदर्शन कर सकते हैं?
"सीपीयू अभी भी बहुत तेज़ है" का क्या मतलब है? क्या आप पूर्ण कार्यक्रम का समय दे रहे हैं जिसमें GPU से और उसके लिए स्मृति की प्रतिलिपि बनाना, या कर्नेल को लॉन्च करने और पूरा करने के लिए केवल समय लगता है? –
मुझे अब समय की आवश्यकता नहीं है, मैं देख सकता हूं कि सीपीयू वाला प्रोग्राम बहुत तेज़ खत्म हो जाता है :( – paulAl