यदि मेरे पास एक ही बनावट इकाई से जुड़े कई बनावट (कहते हैं कि 5+ मैप्स) हैं, तो क्या यह कैश के लिए बदतर काम करता है, अगर मेरे पास केवल 2 या 3 बनावट हैं?
यदि मेरे पास एक ही बनावट इकाई से जुड़े कई बनावट (कहते हैं कि 5+ मैप्स) हैं, तो क्या यह कैश के लिए बदतर काम करता है, अगर मेरे पास केवल 2 या 3 बनावट हैं?
जवाबों:
बस imallett के जवाब में जोड़ते हुए , यह सच है कि एक shader में विभिन्न बनावट डेटा तक पहुंच की संख्या में वृद्धि से GPU कैश (एस) पर दबाव बढ़ेगा, लेकिन कई अन्य कारक हैं जो प्रभाव को महत्वपूर्ण रूप से प्रभावित कर सकते हैं। यह संभवतः इस तथ्य से भी जटिल है कि सीपीयू कैश की तरह, GPU में कैश की कई परतें हो सकती हैं, अर्थात। बनावट इकाई <= L0 <= L1 <= ..मेरी
यदि आपके पास एक दृश्य है जिसमें बनावट डेटा का न्यूनतमकरण है, तो यह परिप्रेक्ष्य या सरल स्केलिंग के कारण है और आप एमआईपी मैपिंग का उपयोग नहीं कर रहे हैं, तो आपको अलियासिंग मिलेगा। यह सिर्फ दृश्य कलाकृतियों का उत्पादन करने के लिए नहीं है; यह एक प्रदर्शन समस्या होने की संभावना है।
जैसे ही आप अलियासिंग करते हैं, पते की बनावट तक पहुंचना असंगत हो जाएगा, जो न केवल कैश को खत्म कर देगा, बल्कि बहुत अधिक DRAM "पेज ब्रेक" (अधिक सही ढंग से, पंक्ति विराम) को पेश करेगा, जो महंगा हो सकता है। एमआईपी मैपिंग की असंगति को कम करने में मदद करता है।
शायद एक स्पष्ट विकल्प का एक सा है, लेकिन अगर आप बनावट संपीड़न (जैसे DXTn | ETC * | PVRTC * | आदि) का उपयोग कर सकते हैं 8bpp से लक्ष्यीकरण, कहो, 2bpp, आप मेमोरी बैंडविड्थ / कैश की प्रभावशीलता को बहुत बढ़ा सकते हैं। 16x के माध्यम से 4x के कारक। अब मैं सभी GPU के लिए नहीं बोल सकता, लेकिन कुछ बनावट संपीड़न योजनाएं (जैसे ऊपर सूचीबद्ध) हार्डवेयर में डिकोड करने के लिए इतनी सरल हैं, कि डेटा पूरे कैश पदानुक्रम में संपीड़ित रह सकता है और केवल बनावट इकाई में विघटित हो सकता है, इस प्रकार उन कैश के आकार को प्रभावी ढंग से गुणा करना।
जाहिर है, कुछ डेटा, उदाहरण के बाद के रेंडरर्स में टेक्सचर डेटा के रूप में इस्तेमाल किए गए टारगेट को प्रस्तुत करना, टेक्सचर कंप्रेशन को नियोजित नहीं कर सकता है। जब भी आप कर सकते हैं, सबसे छोटे पिक्सेल प्रारूप का उपयोग करें जो काम करेगा, अर्थात, यदि 32/16 बीपीपी (ए) आरजीबी करेगा, तो 4x32 फ्लोट स्वरूपों का उपयोग न करें!
यह ऊपर दिए गए अन्य उदाहरण से संबंधित है, लेकिन हमने ऐसे मामलों को देखा है जहां बड़े रेंडर लक्ष्य बनाए जाते हैं, लेकिन तब केवल बहुत ही कम नमूने लिए जाते हैं। कैश लाइनें, सीपीयू या जीपीयू में हों, काफी लंबी हैं इसलिए यदि आप प्रत्येक कैश लाइन में केवल एक पिक्सेल का उपयोग कर रहे हैं, तो आप स्थानान्तरण को बर्बाद कर देंगे।
इसके अलावा, WRT संकुचित बनावट, ये टेक्सल्स के एक स्थानीय क्षेत्र के बीच प्रभावी रूप से डेटा साझा करके संपीड़न को प्राप्त करते हैं। यदि आपके पास सुसंगत अभिगम नहीं है, तो मेमोरी फ़ुटप्रिंट कटौती के अलावा, सम्पीडन संभवतः मदद नहीं करेगा।
नहीं इतना एक कैश मुद्दे का (ठीक है, जब तक गणना पहुंच काफी बेमेल हैं), लेकिन बनावट पहुंच कि सीधे कोने के साथ आपूर्ति की यूवी निर्देशांक द्वारा परिभाषित नहीं कर रहे हैं हो सकता है जो सीधे परिभाषित कर रहे हैं की तुलना में धीमी हो।
हालांकि मुझे संदेह है कि इन दिनों अधिकांश बनावट या तो टाइलों या मॉर्टन-जैसे (उर्फ ट्विडल्ड / स्विज़ल्ड) ऑर्डर (या यहां तक कि दोनों का एक संयोजन) में संग्रहीत की जाएगी, कुछ बनावट अभी भी स्कैन-लाइन ऑर्डर में हो सकती हैं , जिसका अर्थ है कि यह रोटेशन बनावट कैश मिस / पेज ब्रेक की एक महत्वपूर्ण संख्या के लिए नेतृत्व करने की संभावना है। दुर्भाग्य से, मैं वास्तव में नहीं जानता कि अगर किसी विशेष प्रारूप को इस तरह से व्यवस्थित किया जाए तो कैसे स्पॉट किया जाए।
(बैकग्राउंड रीडिंग के लिए, ब्लिन की सच्चाई के बारे में टैक्स्चर मैपिंग की कोशिश करें। एफडब्ल्यूआईडब्ल्यू, यह कहते हुए कि कुछ कदम आगे चलकर कम से कम कुछ शुरुआती पीसी हार्डवेयर में ट्विडल्ड-ऑर्डर (यानी मॉर्टन ऑर्डर) बनावट का उपयोग करते हैं )।
इसका उत्तर इस बात पर निर्भर करता है कि आपका क्या मतलब है। आधुनिक हार्डवेयर (जैसे बाइंडिंग टेक्सचर के साथ) वास्तव में बहुत ज्यादा परवाह नहीं करता है कि कितने बनावट "बाध्य" हैं। असली सवाल यह है कि आप कितने का उपयोग करते हैं ।
बनावट आम तौर पर कैश-फ्रेंडली तरीके से डेटा स्टोर करती है (मॉर्टन कर्व, मेरा मानना है)। यदि आप अधिक बनावट का उपयोग करते हैं, तो आपको अधिक कैश मिसेज मिलेंगे, क्योंकि अब बनावट अंतरिक्ष के लिए एक दूसरे के साथ प्रतिस्पर्धा करती है।
यह वास्तव में सिर्फ प्रसिद्ध, पुराने shader प्रोग्रामिंग heuristic के लिए नीचे आता है: बनावट के नल धीमे होते हैं; बहुत अधिक उपयोग न करें।