2015-03-17 7 views
8

आधुनिक (जीएल 3.3 +) जीपीयू पर जीएलएसएल का उपयोग करते समय, वर्दी पर ब्रांचिंग की संभावित लागत क्या होती है?आधुनिक जीपीयू पर वर्दी पर ब्रांचिंग की लागत

मेरे इंजन में मैं उस बिंदु पर जा रहा हूं जहां मेरे पास बहुत सारे शेडर्स हैं। और मेरे पास बहुत से लोगों के लिए कई अलग-अलग गुणवत्ता प्रीसेट हैं। जैसा कि यह खड़ा है, मैं अलग-अलग गुणवत्ता प्रीसेट चुनने के लिए शेडर्स में अगर() के साथ वर्दी का उपयोग कर रहा हूं। हालांकि मैं चिंतित हूं कि मैं शेडर्स को पुनः संयोजित करके और #ifdef का उपयोग करके बेहतर प्रदर्शन प्राप्त कर सकता हूं। जब मैं एक शेडर को दोबारा जोड़ता हूं तो उस समस्या को अन्य वर्दी को ट्रैक करने और रीसेट करने की चिंता करने की आवश्यकता होती है।

असल में जो मैं जानना चाहता हूं वह यह है कि यदि मेरे डर निराधार हैं। आधुनिक जीपीयू पर एक समान सस्ते पर शाखा है? मैंने कुछ परीक्षण किए हैं और मुझे बहुत कम अंतर मिला है, लेकिन मैंने केवल एनवीडिया 680 पर परीक्षण किया है।

+0

चालक इनलाइन वर्दी के साथ शेडर को फिर से कंपाइल करने के लिए स्वतंत्र है अगर यह देखता है कि अन्यथा ब्रांचिंग की लागत बहुत अच्छी होगी। –

+0

थ्रेड विचलन, जहां एक शेडर के समानांतर आमंत्रण अलग-अलग नियंत्रण पथ लेते हैं, आधुनिक जीपीयू में एक प्रमुख मुद्दा है। एक कार्यक्रम में सभी आमंत्रणों पर वर्दी लागू होती है, हालांकि, यह कोई मुद्दा नहीं है। कशेरुक गुणों पर शाखाओं से बचने या अन्यथा गतिशील डेटा आपके समय का बेहतर उपयोग है। –

+0

ठीक है, इसलिए व्यावहारिक रूप से, यह एक आधुनिक जीपीयू पर स्थिरता के साथ पुन: संकलन करने की तुलना में धीमी गति से होने की संभावना नहीं है, या तो क्योंकि सीपीयू पर शाखाएं अलग-अलग होती हैं, या क्योंकि संकलक स्वचालित रूप से शेडर को फिर से संकलित कर देगा। क्या मैं सही ढंग से समझता हूं? – Jagoly

उत्तर

5

मैं स्वीकार करूंगा कि मैं एक विशेषज्ञ नहीं हूं, लेकिन शायद मेरी अटकलें कुछ भी नहीं है।

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

मेरी इच्छा है कि मैं और अधिक सहायक हो सकता हूं और अगर कोई और अधिक अधिकृत रूप से उत्तर दे तो मैं भी सराहना करता हूं। मैं, एक के लिए, वर्दी पर ब्रांचिंग के बारे में ज्यादा चिंता नहीं करता, हालांकि। लेकिन हमेशा की तरह, यदि आपके पास संभावना है, तो अपने शेडर को प्रोफाइल करें और देखें कि क्या यह कोई ध्यान देने योग्य अंतर बनाता है।

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