Her zaman dal ayrışmasının sadece "if", "else", "for", "switch" vb. Gibi dallanma kodlarından kaynaklandığını düşünmüştüm. Bununla birlikte, yakın zamanda yazdığı bir makaleyi okudum:CUDA'da, birleştirilmemiş bellek erişimleri dal ayrılmasına neden olur mu?
Her bir ilk keşif tabanlı algoritmada iş parçacıkları tarafından alınan ıraksak dalların sayısının, tam keşif stratejisinden en az iki kez daha önemli olduğunu açıkça gözlemleyebiliriz: Bu, tipik olarak ek birleşik olmayan erişimden alınan sonuçların sonucudur. Bu nedenle, bu tür bir diş sapması, serileştirilmesi gereken birçok bellek erişimine yol açarak, çalıştırılan toplam komut sayısını arttırmaktadır.Birleştirilmemiş erişimleri kullanan sürüm için warp serileştirme sayısının, karşılığı için yedi ile on altı arasında daha önemli olduğunu gözlemleyebiliriz. Gerçekten de, , birleşik olmayan erişimlerin neden olduğu bir ileti dizisi ayrışması, serileştirilmesi gereken bir çok bellek erişimine yol açarak, yürütülecek yönergeleri artırır. "
Bu yazara göre, gibi görünüyor olmayan coalesced erişimler farklı dalları neden olabilir. Gerçek? Sorum tam olarak şube ayrışmada kaç nedeni olduğunu var mı? Peşin teşekkür ederiz.
Orijinal referansa bağlanabilir misiniz? – talonmies
+1 Gerçekten bir bellek erişim stratejisinin farklı branşlamalardan nasıl sorumlu olacağını bilmek istiyorum. Lütfen referansı ekleyin. –
Bu tez referans olmalıdır. 2 paragraf, sırasıyla p80 ve p107'den gelir. http://mistic.heig-vd.ch/luong/thesis.pdf – kangshiyin