2.x bilgi işlem cihazları için doğru bir şekilde anladığım için iş parçacığı başına 63 kayıt sınırı vardır. Hesaplama kapasitesi 1.3 cihazlarının her dişi için kayıt sınırı hangisinin olduğunu biliyor musunuz?Her bir diş için Cuda yazmaçları
GTX260 üzerinde test ettiğim büyük bir çekirdim var. Çekirdek çok karmaşık olduğundan ve çok fazla yerel değişkene ihtiyacım olduğundan çok fazla kayıt kullandığımdan eminim. Cuda profiler göre benim kayıt kullanımım 63 (Statik Smem 68 ne anlama geldiğini ve ne kadar dinamik Smem 0 olduğundan emin değilim rağmen), ben 63'ten fazla yerel değişken var eminim rağmen, ben derleyici, kayıtları yeniden veya yerel belleğe döküyor.
Şimdi, hesaplama kapasitesi 1.3'teki aygıtların, 2.x aygıtlarından daha fazla iş parçacığı için daha yüksek bir yazma sınırı olduğunu düşündüm. Benim tahminim, derleyicinin 63 sınırı seçmesiydi, çünkü 256 parçanın bloklarını kullanıyorum. 256 * 63 16128 iken, 256 * 64 16384 iken bu aygıtın SM'sinin limit sayısıdır. Tahminimce, blok başına iplik sayısını düşürürsem, kullanımdaki yazmaç sayısını arttırabilirim. Böylece çekirdek 196 iş parçacığı blokları ile koştum. Fakat yine de, 63 * 192, 12096 ve 64 * 192 12288 olsa da, profiler, SM'nin 16384 limitinin içinde olan 63 kaydı göstermektedir.
Peki, derleyicinin neden hala 63 yazmaçla sınırlandığını anlatan bir fikir var mı? Her şey yeniden kayıt olmasından kaynaklanıyor olabilir mi yoksa hala kayıtlar dökülüyor mu? parçacığı başına
Cevabınız sorunun ilk kısmı için olabilir [burada] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#features-technical-specifications.xml) – talonmies
Evet Daha önce ona bakıyordum. Tabloda, "Çok işlemcili başına 32-bit kayıt sayısı", 16K olan ancak ihtiyaç duyduğum şey, burada belirtilmeyen ** iş parçacığı başına izin verilen maksimum ** sayısıdır. 2.x cihazlar için limitin 63 olduğunu biliyorum ama 1.3 için bir limit var mı? – Atirag
Bakmaya devam et, her iplik numarası – talonmies