2011-08-29 15 views
7

का उपयोग मैं वर्तमान में तैरता है कि मैं अपने OpenCL कर्नेल में कार्रवाई करता है, तो मैं इस सरणी विभाजित है और इसके बजाय एक OpenCL वेक्टर प्रकार सरणी का उपयोग करें, अगर यह प्रक्रिया में तेजी लाने जाएगा मैं सोच रहा हूँ की एक बड़ी सरणी है। असल में अगर मेरे पास 4,800 फ्लोट्स की सरणी थी तो मैं इसे 300 फ्लोट 16 वैक्टरों की सरणी में विभाजित कर दूंगा। क्या यह सिम का लाभ उठाएगा?Do OpenCL वेक्टर प्रकार SIMD

+2

OpenCL पहले से ही अंतर्निहित हार्डवेयर के SIMD सुविधाओं का लाभ उठाना चाहिए, या यह GPU प्रोग्रामिंग के लिए काफी बेकार हो सकता है। मुझे यकीन नहीं है कि यह सीपीयू पर क्या करता है, हालांकि सीपीयू ओपनसीएल का सही डोमेन नहीं है, इसकी ताकतें खेलने के लिए, वैसे भी। –

उत्तर

7

इंटेल वास्तव में वर्णन करता है कि उनके OpenCL एसडीके: देखने Writing Optimal OpenCL™ Code with Intel® OpenCL SDK। बेंचमार्किंग के अतिरिक्त, आप इसे देखना चाहेंगे। दिलचस्प हिस्सा अध्याय 2.3 में शुरू होता है।

आपके प्रश्न का उत्तर करने के लिए: हाँ, यह SIMD का लाभ प्राप्त करेंगे। लेकिन "वेक्टर डेटा प्रकारों का उपयोग करके सीपीयू वेक्टर इकाइयों के उपयोग को अधिकतम करने के लिए" आपको वास्तव में उस दस्तावेज़ को पढ़ना चाहिए।

0

यह हो सकता है, या यह नहीं हो सकता है। यह ओपनसीएल के कार्यान्वयन पर निर्भर करता है, और जिस हार्डवेयर पर आपका प्रोग्राम निष्पादित होता है।

यह देखने का एकमात्र तरीका है कि यह सुधार प्रदान करता है या नहीं, वेक्टर आकारों की सीमा के लिए प्लेटफार्मों और ब्याज के कार्यान्वयन पर बेंचमार्क करना है (उदाहरण के लिए 1 (स्केलर), 2, 4, 8 और 16 की तुलना करें)।

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