Lokalitas referensi itu penting, tetapi Anda tidak perlu khawatir bahwa banyak ... karena Anda tidak memiliki kontrol mutlak.
Saat menggunakan OpenGL / DirectX Anda biasanya memiliki kontrol terbatas pada tata letak memori, driver akan melakukan sisanya. Sebagai contoh, Anda dapat mencoba beberapa tata letak buffer verteks, seperti menggunakan data vertex interleaved atau non-interleaved dan tergantung pada data Anda / driver / kinerja GPU akan bervariasi. Profil dan pilih yang paling cocok dengan aplikasi Anda.
Misalnya dalam optimasi GPU Permata Pipa, lokalitas referensi disebutkan dua kali , yang pertama:
Akses data vertex secara relatif berurutan. Memori cache GPU modern mengakses ketika mengambil simpul. Seperti dalam hierarki memori apa pun, lokalitas spasial referensi membantu memaksimalkan hit dalam cache, sehingga mengurangi kebutuhan bandwidth.
Dan yang kedua
Optimalkan untuk cache vertex pasca-T & L. GPU modern memiliki cache kecil masuk pertama, keluar pertama (FIFO) yang menyimpan hasil dari simpul yang paling baru ditransformasikan; hit di cache ini menyimpan semua pekerjaan transformasi dan pencahayaan, bersama dengan semua pekerjaan yang dilakukan sebelumnya dalam pipa. Untuk memanfaatkan cache ini, Anda harus menggunakan primitif yang diindeks, dan Anda harus memesan simpul Anda untuk memaksimalkan lokalitas referensi di atas mesh. Ada alat yang tersedia — termasuk D3DX dan NVTriStrip (NVIDIA 2003) —yang dapat membantu Anda dengan tugas ini.
Menurut pendapat saya, rekomendasi tersebut mengikuti apa yang saya bicarakan, dan menyiratkan bahwa Anda tidak memiliki kendali mutlak atas tata letak memori, namun apa yang Anda kendalikan, misalnya bagaimana setiap simpul VBO diletakkan dapat memiliki efek pada kinerja.
Jika aplikasi Anda mengalami hit kinerja, Anda harus terlebih dahulu mendeteksi kemacetan, itu mungkin bukan masalah lokalitas data referensi, tetapi mungkin dengan karena ada sejumlah besar data tanpa culling, misalnya Anda tidak melakukan culling frustum .. dll Anda dapat memeriksa jawaban saya di sini pada topik.
Saya pikir Anda harus lebih khawatir tentang lokalitas referensi ketika menggunakan OpenCL / CUDA kalau Anda sering memiliki kontrol mutlak atas tata letak memori.