संदर्भ की स्थानीयता मायने रखती है, लेकिन आपको इतना परेशान होने की जरूरत नहीं है ... क्योंकि आपके पास पूर्ण नियंत्रण नहीं है।
OpenGL / DirectX का उपयोग करते समय आपके पास आमतौर पर मेमोरी लेआउट पर सीमित नियंत्रण होता है, ड्राइवर बाकी काम करेगा। उदाहरण के लिए आप कई वर्टेक्स बफ़र लेआउट की कोशिश कर सकते हैं, जैसे कि इंटरलेव्ड या नॉन-इंटरलेव्ड वर्टेक्स डेटा का उपयोग करना और आपके डेटा / ड्राइवर / जीपीयू के प्रदर्शन के आधार पर अलग-अलग होंगे। प्रोफ़ाइल और चुनें कि आपके आवेदन में सबसे अच्छा क्या फिट बैठता है।
उदाहरण के लिए, GPU रत्न पाइपलाइन अनुकूलन में, संदर्भ का स्थानीयता दो बार उल्लिखित है , पहला:
अपेक्षाकृत अनुक्रमिक तरीके से वर्टेक्स डेटा तक पहुंचें। आधुनिक जीपीयू कैश मेमोरी पहुंचता है जब वर्टीकल लाते हैं। किसी भी स्मृति पदानुक्रम में, संदर्भ का स्थानिक स्थान कैश में हिट को अधिकतम करने में मदद करता है, इस प्रकार बैंडविड्थ आवश्यकताओं को कम करता है।
और दूसरा
टी एंड एल वर्टेक्स कैश के लिए ऑप्टिमाइज़ करें। आधुनिक जीपीयू में एक छोटा फर्स्ट-इन, फर्स्ट-आउट (एफआईएफओ) कैश होता है जो हाल ही में परिवर्तित वर्जन के परिणाम को स्टोर करता है; इस कैश में एक हिट सभी परिवर्तन और प्रकाश व्यवस्था के काम को बचाता है, साथ ही पाइप लाइन में पहले किए गए सभी कार्यों के साथ। इस कैश का लाभ उठाने के लिए, आपको अनुक्रमित प्राइमेटिव का उपयोग करना चाहिए, और आपको अपने वर्टीकल को मेष पर संदर्भ के स्थानीयता को अधिकतम करने के लिए आदेश देना होगा। ऐसे उपकरण उपलब्ध हैं-जिनमें डी 3 डीएक्स और एनवीट्रीस्ट्रिप (एनवीआईडीआईए 2003) शामिल हैं- इस कार्य में आपकी मदद कर सकते हैं।
मेरी राय में उन सिफारिशों का पालन किया जाता है जिनके बारे में मैं बात कर रहा हूं, और इसका मतलब है कि आपके पास मेमोरी लेआउट पर पूर्ण नियंत्रण नहीं है, फिर भी आपके पास जो नियंत्रण है, उदाहरण के लिए प्रत्येक वीबीओ वर्टिस को कैसे निर्धारित किया जाता है, प्रदर्शन पर असर पड़ सकता है।
यदि आपके एप्लिकेशन में कोई परफ़ॉर्मेंस हिट हो रहा है, तो आपको पहले टोंटी का पता लगाना चाहिए, हो सकता है कि यह रेफ़रेंस का एक स्थानीय डेटा समस्या न हो, लेकिन ऐसा इसलिए हो सकता है क्योंकि बिना किसी कॉलिंग के बड़ी मात्रा में डेटा है, उदाहरण के लिए आप फ्रिज़ी क्यूलर नहीं कर रहे हैं .. आदि आप इस विषय पर मेरे जवाब की जाँच कर सकते हैं।
मुझे लगता है कि OpenCL / CUDA का उपयोग करते समय आपको संदर्भ के स्थानीयता के बारे में अधिक चिंता करनी चाहिए, क्या आप अक्सर मेमोरी लेआउट पर पूर्ण नियंत्रण रखते हैं।