opengl - ओपनसीएल और ओपनजीएल के गणना शेडर के बीच क्या अंतर है?




opencl gpgpu (2)

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

मुख्य मतभेद मूल रूप से हैं:

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

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

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

मुझे पता है कि ओपनसीएल जीपीयू की मेमोरी आर्किटेक्चर का नियंत्रण देता है और इस प्रकार बेहतर अनुकूलन की अनुमति देता है, लेकिन, इसे छोड़कर, क्या हम वेक्टर ऑपरेशंस (अतिरिक्त, गुणा, उलटा इत्यादि) के लिए कंप्यूट शेडर्स का उपयोग कर सकते हैं?


एक और परिप्रेक्ष्य के लिए here देखो। सारांश:

हां, ओपनसीएल पहले से मौजूद है, लेकिन यह हेवीवेट अनुप्रयोगों (सीएफडी, फेम, आदि सोचता है) को लक्षित करता है, और यह ओपनजीएल की तुलना में अधिक सार्वभौमिक है (जीपीयू से परे सोचें ... इंटेल के ज़ीओन फिई आर्किटेक्चर का समर्थन> 50 x86 कोर)।

साथ ही, ओपनजीएल / सीयूडीए और ओपनसीएल के बीच बफर साझा करना मजेदार नहीं है।







compute-shader