İndekslenmiş ilkelleri oluştururken köşe arabelleği verilerinin sırası önemli mi?


14

3B bir nesnenin üçgenleri yapıyorum. Bunları hesaplandıkları sırayla buffer'a yazabilirsem CPU kodunu basitleştirecektir. Üçgenlerin köşeleri bitişik olmayacaktır.

Bunları sıra dışı yazmak için herhangi bir performans cezası var mı?

Yanıtlar:


12

Burada en az iki faktör var. GPU'lar, dizin oluşturulmuş ilkeler oluşturulduğunda dönüşüm sonrası köşe önbelleğini kullanabilir. Bu önbelleğin boyutu değişir ve bireysel bir çizim çağrısı sırasında kullanılır (bildiğim kadarıyla birden fazla çağrıda değil, bu nedenle arabellek verilerini bu bağlamda ne sıklıkta değiştirdiğiniz önemli değildir).

Verilerinizi bu önbellekten yararlanmak üzere düzenlerseniz (örnek bir algoritma buradadır ), performans geliştirmelerini görebilirsiniz. Bununla birlikte, bu kuruluşun endekslerinizi sipariş etmekle ilgisi vardır, böylece her bir dizin üçlüsü, son zamanlarda görülen birçok köşeyi mümkün olduğunca yeniden kullanır. İndeks tamponunuz aracılığıyla üçgenleriniz de arabellek içinde rastgele dağılmadıkça, muhtemelen sizin senaryolarınız üzerinde çok az etkisi vardır ... bu durumda muhtemelen önbelleği sık sık üflersiniz. Sorunuzda durumun bu olup olmadığı bana açık değildi, bu yüzden bahsetmeye değer olduğunu düşündüm.

Sorun olma olasılığı daha yüksek olan şey GPU'ların ayrıca bir çizim sırasında bellek verilerine köşe erişimini önbelleğe almasıdır. Büyüklüğü o cache da oldukça güvenilmez boyutlandırılır ve bunu çok kötü lokalize köşe verilerine indisleri işleme Her bir çekirdekteki bu önbellekte yüksek bayan frekansı alabilir tabi mümkünse.

Bu, uygulamanızda kırmızı bir bayrak olmak için yeterli bir performans sorununun oluşmasına neden olup olmayacağı ve algoritmanın okunabilirliği pahasına verileri daha iyi organize etmek için algoritmanızı yeniden yapılandırmak gibi görünüyor (kulağa benziyor). ... bu benim cevaplayabileceğim bir şey değil, bazı senaryoları profilini oluşturup görmeniz gerekecek.

Ben şahsen okunabilir, bakımı kolay kod tarafında hata olur, ancak, neden olacak herhangi bir önbellek eksik kullanıcıların fark etmek için yeterli olmayacağını düşünüyorum gibi .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.