我有一個CUDA內核,我是基準測試,全局內存緩存重播顯示爲216.9%如何使全局內存緩存重放超過100%?
這對我來說不太合理。我可以看到超過100%的緩存未命中情況的唯一方法是在多個緩存級別上丟失緩存未命中情況,但這似乎不是這種情況。
任何有關爲什麼會出現這種情況的見解?
我有一個CUDA內核,我是基準測試,全局內存緩存重播顯示爲216.9%如何使全局內存緩存重放超過100%?
這對我來說不太合理。我可以看到超過100%的緩存未命中情況的唯一方法是在多個緩存級別上丟失緩存未命中情況,但這似乎不是這種情況。
任何有關爲什麼會出現這種情況的見解?
類似的問題發生在我身上。我得到了全球負載效率超過100%。 Here是它的鏈接。因爲我覺得這兩種現象都有相同的起源,我引用我得到了答案:
全局負載效率和全球存儲效率描述瞭如何以及DRAM的訪問的凝聚和(L2?)緩存訪問工作。如果他們是100%,那麼你有完美的合併。由於100%以上的效率沒有任何意義(你不能超越最佳),這必須是一個錯誤。這個錯誤是由Visual Profiler引起的,它計算硬件事件來計算一些抽象度量。但是GPU沒有「正確的」事件來精確計算所有這些度量,因此Visual Profiler必須通過使用一些複雜的公式和「錯誤」事件來估計這些度量。有一些指標只是粗略的估計,全球負荷效率和全球商店效率就是其中兩個。因此,如果這樣的效率大於100%,則這是估計誤差。據我觀察到,在我的一些註冊溢出內核中,全局負載效率和全局存儲效率都提高了100%以上。這就是爲什麼我假設Visual-Profiler使用一些事件,這些事件也可能是由本地內存訪問引起的,以計算這兩種效率。此外,GPU只使用32位計數器。因此長時間運行的內核往往會溢出這些計數器,這也會導致Visual Profiler顯示錯誤的度量標準。
我曾經歷過類似的事情。請參閱[本文](http://stackoverflow.com/q/19650777/2386951)。它們可能具有相同的起源。 – Farzad
看起來就是這樣。你可以發佈這個答案,以便我可以接受嗎? – PseudoPsyche