दो भाग सवाल:ओपन-OpenCL इंटरॉप स्थानांतरण बार + बनावट
मैं एक स्कूल परियोजना एक वाहन GPGPU के साथ प्रयोग करने के रूप में जीवन के खेल का उपयोग करने पर काम कर रहा हूँ। मैं रीयलटाइम विज़ुअलाइज़ेशन के लिए ओपनसीएल और ओपनजीएल का उपयोग कर रहा हूं और लक्ष्य यह है कि यह चीज़ जितनी संभव हो सके उतनी बड़ी और तेज हो। प्रोफाइलिंग पर मुझे लगता है कि फ्रेम समय पर सीएल अधिग्रहण और जीएल बफर जारी करना है, और समय लागत बफर के वास्तविक आकार के लिए सीधे आनुपातिक है।
1) क्या यह सामान्य है? यह क्यों होना चाहिए? मेरी समझ में सबसे अच्छी बात यह है कि बफर कभी भी डिवाइस मेमोरी नहीं छोड़ता है, और सीएल अधिग्रहण/रिलीज एक म्यूटेक्स की तरह कार्य करता है। क्या OpenCL प्रत्येक बाइट को अलग-अलग या कुछ अनलॉक करता है?
इस के आसपास पाने के लिए मैं 24-बिट आरजीबीए रंग मोड (ओपनजीएल के पसंदीदा रंग मोड के रूप में इसे समझता हूं?) से 8-बिट आरजीबी रंग में संकुचित हो गया है। इसके परिणामस्वरूप एक बड़ी गति हुई है, लेकिन मेरे कर्नेल को ट्यून करने के बाद, स्थानांतरण समय फिर से हावी हो रहे हैं।
स्थानांतरण समय को पूरी तरह खत्म करने के तरीके पर किसी भी विचार की अनुपस्थिति में (ओपनसीएल से जीएलएसएल तक मेरे कर्नेल को पोर्ट करने से छोटा, जो परियोजना के मूल दायरे से अधिक होगा), अब मुझे लगता है कि मेरी सबसे अच्छी शर्त लिखना है बिटमैप के लिए (जैसा कि मैं वर्तमान में उपयोग कर रहा हूं 8-बिट पिक्समैप के विपरीत) और फिर उस बिटमैप का उपयोग एक रंग सूचकांक के साथ एक ट्रैक्टर बनाने के लिए करें।
2) क्या मैं सीधे बिटमैप का उपयोग करके एक ट्रैक्टर बना सकता हूं? मैंने ग्लोबिमैप का उपयोग सहायक बफर को आकर्षित करने के लिए किया है, और उसके बाद इस बफर का उपयोग अपने ट्रैक्टर को बनाने के लिए किया है, लेकिन यदि कोई उपलब्ध है तो मैं अधिक प्रत्यक्ष मार्ग का उपयोग करना पसंद करूंगा।
उत्कृष्ट। मैं 1.0 (हार्डवेयर सीमाएं) का उपयोग कर रहा हूं और मुझे यह जानकर खुशी हो रही है कि इन मुद्दों का समाधान हो गया है। मुझे लगता है कि मुझे वास्तव में क्या चाहिए एक नया वीडियो कार्ड है। –