.h ve .cu ile yazılan birçok sınıfa sahibim, bu nedenle yeniden yüklenebilir aygıt kodunu denedim (-rdc = true). Yaklaşık 12 saniyeye mal oldu. Daha sonra kodu birleştirmeyi denedim, yalnızca üst sınıfları kullan ve -rdc = true'u kaldır, sadece 2 saniye sürdü.Neden crd kodu -rdc = true belirtildiğinde çok daha yavaş çalışır
Kod ne yapar? Win1 şifreleme için kullanılan sha1 (bazı dize) 0x40000 kez.
Neden? Şimdilik sorun değil, ama projem daha büyük olacak ve ayrı bir derleme faydalı olacaktır. -rdc = true'un performansı yavaşlatabileceği normal davranış mı?
Kodun kendisiyle ilgili herhangi bir bilgi olmadan hipotez yapmak zordur. CUDA derleyici, "tüm program" modunda derlediğinde, genellikle ek optimizasyonlar için fırsatlar açan (ortak alt-ifade eleme, sürekli yayılım, daha iyi yük çizelgeleme), agresif fonksiyonları devreye alır. CUDA takım zincirinin bir optimizasyon bağlayıcısı olmadığı için, '-rdc = true' işlevlerini kullanırken derleme birimi sınırları boyunca satır içi çizilemez. Ayrı olarak derlenen işleve, ABI çağrı kuralının ek yüküne ve satır içi ile etkinleştirilen diğer optimizasyonlara yapılan çağrılar yapılmaz. – njuffa