मैं एक स्नातक की परियोजना के लिए GPU पर isosurface एल्गोरिदम की खोज कर रहा हूं (विशेष रूप से वास्तविक-मूल्यवान क्षेत्रों के बजाय voxel डेटा में केवल बाइनरी पर ध्यान केंद्रित कर रहा हूं)। इसलिए मेरे पास अच्छे पुराने मार्चिंग क्यूब्स का एक सीपीयू कार्यान्वयन है और ओपनफ्रेमवर्क में चल रहा है, और अब इसे जीएसएसएल कम्प्यूट शेड्स में पोर्ट करने की कोशिश कर रहा है, और इससे पहले कि मैं गोता लगाऊं उसमें नुकसान पर विचार कर रहा हूं। मैंने केवल लंबवत और नाजुक शेडर्स लिखे हैं। इससे पहले यह सब मेरे लिए नया है।
मेरा पहला मुद्दा यह है कि एक कार्यसमूह में दर्जनों या सैकड़ों थ्रेड्स में कुशलतापूर्वक लुकअप टेबल का उपयोग कैसे किया जाए? मैं समझता हूं कि एक GPU में विभिन्न कार्यों के लिए विभिन्न प्रकार की मेमोरी होती है, लेकिन यह पूरी तरह से निश्चित नहीं है कि प्रत्येक कैसे संचालित होता है या किस प्रकार का उपयोग करना है।
पॉल बॉर्के की क्लासिक कॉपिस्टा टेबल एक 256 * 16 की सरणी है इसलिए यदि स्केलर बाइट प्रकार का उपयोग करके यह संभवत: 4kb बनावट या SSBO में पैक किया जा सकता है।
सवाल यह है कि विभिन्न धागों को एक-दूसरे को ट्रिप करने से कैसे रोका जाए? प्रत्येक कार्य समूह में कई क्यूब्स में संभवतः एक ही कॉन्फ़िगरेशन हो सकता है इसलिए एक ही समय में बफर में एक ही स्थान तक पहुंचने की कोशिश कर रहा है। क्या इससे निपटने के लिए वर्कअराउंड या ऑप्टिमाइज़ेशन है?