2013-10-29 44 views
3

我有一個CUDA程序,其中塊的線程在幾次迭代中讀取長陣列的元素,並且內存訪問幾乎完全合併。當我進行配置時,全局負載效率超過100%(根據輸入,在119%和187%之間)。 的說明全局負載效率是「全局內存負載吞吐量與所需全局內存負載吞吐量的比值」「這是否意味着我正在使用L2高速緩存並且我的內存訪問受益於它?「全局負載效率」超過100%

我的GPU是GeForce GTX 780(開普勒架構)。

回答

3

我在NVIDIA論壇here上問了這個問題。我引用我得到的答案:

「全局負載效率和全局存儲效率描述了DRAM訪問和(L2?)高速緩存訪​​問合併的效果如何,如果它們是100%因爲高於100%的效率沒有任何意義(你不能超越最佳),這必須是一個錯誤 這個錯誤是由Visual Profiler引起的,該Profiler計算硬件事件以計算一些抽象度量。 GPU沒有「正確」事件來精確計算所有這些度量,因此Visual Profiler必須使用一些複雜的公式和「錯誤」事件來估計這些度量。有一些度量僅僅是粗略估計和全局負載效率和全球商店效率是其中的兩個,因此如果這樣的效率大於100%是一個估計錯誤。據我觀察到,在我的一些註冊溢出內核中,全局負載效率和全局存儲效率都提高了100%以上。這就是爲什麼我假設Visual-Profiler使用一些事件,這些事件也可能是由本地內存訪問引起的,以計算這兩種效率。此外,GPU只使用32位計數器。因此,長時間運行的內核傾向於溢出這些計數器,這也會導致Visual Profiler顯示錯誤的度量標準。「