2010-07-03 13 views
16

मैं OpenCL और DirectCompute के बीच तुलना की तलाश में हूं, लेकिन मुझे कुछ भी नहीं मिला है। क्रॉस-प्लेटफार्म होने के ओपनसीएल के फायदे और समर्थित जीपीयू की विस्तृत श्रृंखला होने से मुझे कोई फर्क नहीं पड़ता। मैं केवल विंडोज़ पर डीएक्स 11 जीपीयू के खिलाफ कोडिंग के साथ ठीक हूं। मानते हैं कि, प्रत्येक एपीआई के पेशेवरों और विपक्ष क्या हैं?ओपनसीएल बनाम डायरेक्ट कॉम्प्यूट?

मुझे पता है this question was raised before, लेकिन मुझे और जानकारी मिल रही है।

मुझे कुडा में दिलचस्पी नहीं है, क्योंकि मैं खुद को केवल एनवीडिया हार्डवेयर तक सीमित नहीं करना चाहता हूं।

+0

आप शायद CUDA पर अपना रुख पुनर्विचार करना चाहें, यह सुंदर किकस है, जैसा कि एनवीडिया हार्डवेयर है। – Benson

+6

@ बेन्सन मानते हैं कि आपके सभी उपयोगकर्ताओं के पास एनवीडिया हार्डवेयर बहुत बड़ी विफलता की तरह दिखता है। वास्तव में एक मानक एपीआई जैसे ओपनसीएल या डायरेक्ट कॉम्प्यूट के साथ चिपकने के लिए सर्वश्रेष्ठ। वे दोनों केवल एनवीडिया हार्डवेयर पर काम करने के नुकसान के बिना CUDA के समान फायदे प्रदान करते हैं। वास्तव में आजकल किसी को भी एडीआई का उपयोग करने के फैसले पर सवाल उठाना पड़ता है जब अन्य एपीआई होते हैं जो कि विभिन्न हार्डवेयर प्रणालियों पर बिल्कुल वही काम करते हैं। – Cromulent

+0

@ सिमोन क्या वे वास्तव में करते हैं? मैं स्वीकार करता हूं कि मैंने कुछ महीनों से तुलना की है, लेकिन आखिर में मैंने जांच की कि सीयूडीए परिमाण का एक आदेश था और समृद्ध है। जब आप DirectCompute का उपयोग करते हैं तो आप अन्य मान्यताओं को बनाते हैं। इस बीच, हर किसी के पास सामान्य "उपयोगकर्ता" नहीं होते हैं। एक बहुत सी वैज्ञानिक कंप्यूटिंग परियोजनाएं हार्डवेयर खरीदती हैं और इसे चलाने के लिए सॉफ्टवेयर का निर्माण करती हैं। चूंकि हमें बॉब से कोई विवरण नहीं मिला है, इसलिए आप एक या दूसरे तरीके से नहीं मान सकते हैं। – Benson

उत्तर

11

शायद कोडर के लिए सबसे बड़ा अंतर यह है कि डायरेक्ट कॉम्प्यूट को ऐसी भाषा द्वारा प्रोग्राम किया जाता है जो एचएलएसएल के समान होता है, और ओपनसीएल को सी-जैसी भाषा के माध्यम से प्रोग्राम किया जाता है।

विचार करने का एक और अंतर यह है कि, आम तौर पर, कमोडिटी स्तर जीपीयू के लिए, डायरेक्टएक्स समर्थन विंडोज पर ओपनजीएल समर्थन की तुलना में बेहतर (तेज और कम छोटी गाड़ी) है। यह DirectCompute के लिए अधिक स्थिर समर्थन में अनुवाद कर सकता है, लेकिन वास्तव में, यह केवल अटकलें है।

+0

विंडोज़ पर ओपनजीएल समर्थन ओपनसीएल के साथ क्या करना है ...? महत्वपूर्ण बात यह है कि विक्रेताओं के बीच समर्थन में अंतर; एएमडी ओपनसीएल का बहुत अच्छा समर्थन करता है और नए संस्करणों के लिए समर्थन करता है, एनवीआईडीआईए (जिसमें प्रतिस्पर्धी सीयूडीए उत्पाद है) केवल सीएल 1.1 (छवि एक्सटेंशन इत्यादि के साथ) का समर्थन करता है, इसके अलावा, ओपनसीएल कुछ चीजों की गारंटी देता है DirectCompute (और OpenGL से गणना शेडर्स) , आईईईई फ्लोटिंग प्वाइंट अनुपालन की तरह। – Amadiro

+0

जब मैंने यह लिखा, और मुझे लगता है कि यह अभी भी मामला है, तो निम्न स्तर के वीडियो कार्ड ड्राइवर प्रत्येक तकनीक के लिए समान हैं। कृपया ध्यान से पढ़ें कि मैं क्या कहता हूं: "यह अधिक स्थिर समर्थन में अनुवाद कर सकता है ..." यह अटकलें है, लेकिन आधारहीन नहीं है, क्योंकि प्रोटोकॉल मेमोरी को स्थानांतरित करने और वीडियो कार्ड से और उसके लिए फ़ंक्शंस या तो स्टैक के लिए समान है, और इसके लिए डायरेक्ट कॉम्प्यूट उसी परीक्षण और मजबूती का हिस्सा साझा करता है जो बेहतर समर्थित डायरेक्टएक्स का आनंद लेता है। फिर, उस समय मैंने यह लिखा था। – codekaizen

11

ओपनसीएल का मुख्य लाभ यह है कि यह केवल ग्राफिक्स कार्ड तक ही सीमित नहीं है। आप अपने मल्टीकोर सीपीयू, ग्राफिक्स कार्ड और संभावित रूप से किसी अन्य प्रोग्राम के अन्य हार्डवेयर त्वरण उपकरणों (डीएसपी इत्यादि) का उपयोग कर सकते हैं।

मुझे यकीन नहीं है कि DirectCompute स्वतंत्रता की अनुमति देता है या नहीं।

+1

डायरेक्ट कॉम्प्यूट CPU संसाधनों पर नहीं चलता है, हालांकि एमएसआर से एक्सेलेरेटर v2 CPU पर चलता है, और इसके बजाय कम्प्यूटेशनल के उपयोग को सारणीबद्ध करता है संसाधनों। http://research.microsoft.com/en-us/projects/accelerator/ – codekaizen

1

मैं ओपनसीएल का उपयोग करता हूं क्योंकि मैं आसानी से अपने ऐप को लिनक्स में बंद कर सकता हूं लेकिन डायरेक्ट कॉम्प्यूट के साथ यह संभव नहीं है। मुझे लगता है कि ओपनसीएल कार्यान्वयन का प्रदर्शन समय के साथ बढ़ जाएगा (यह एनवीडिया कार्ड के लिए सीयूडीए जैसे स्तर पर आता है) और यह भी कि (ड्राइवर) कीड़े (उम्मीद है;)) समय के साथ समाप्त हो जाएंगी।

4

ओपनसीएल क्रॉस-प्लेटफ़ॉर्म-नेस केवल एक विवरण नहीं है, क्योंकि मेजबान कोड (ओपनसीएल एपीआई को कॉल करने और कर्नेल सबमिट करने वाला) स्वयं क्रॉस-प्लेटफ़ॉर्म हो सकता है (link text, link text देखें ...)।

एक बार लिखें, कहीं भी किसी भी GPGPU पर चलें।

अन्यथा OpenCL टूलींग वास्तव में, बेहतर हो रहा है दृश्य स्टूडियो, NVIDIA & अति SDKs कि नमूनों की टन होता है, आदि के लिए एक अति स्ट्रीम प्लगइन के साथ ...

3

एक अन्य विकल्प अब सी ++ एएमपी जो आप देता है हार्डवेयर पोर्टेबिलिटी को संरक्षित करते हुए एक अलग कंपाइलर की आवश्यकता के बिना आधुनिक सी ++ वाक्यविन्यास। कृपया अधिक जानकारी के लिए यहां से लिंक का पालन करें और उनके पास प्रश्न पोस्ट करने में संकोच न करें: http://blogs.msdn.com/b/nativeconcurrency/archive/2011/09/13/c-amp-in-a-nutshell.aspx

+1

मैं इस धारणा के तहत था कि केवल विजुअल स्टूडियो 2012 सी ++ एएमपी कोड संकलित कर सकता है - क्या यह "एक अलग कंपाइलर की आवश्यकता" के रूप में नहीं गिना जाता है? – JBentley

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