我正在學習CUDA優化。我在這個鏈接上找到了一個演示文稿:Optimizing CUDA by Paulius Micikevicius。CUDA:內存性能,什麼是全局內存帶寬
在這個演示中,他們談論
MAXIMIZE全球內存帶寬
,他們說,全球內存合併將提高帶寬。
我的問題,你如何計算全局內存帶寬。任何人都可以用簡單的程序例子來解釋我。
我正在學習CUDA優化。我在這個鏈接上找到了一個演示文稿:Optimizing CUDA by Paulius Micikevicius。CUDA:內存性能,什麼是全局內存帶寬
在這個演示中,他們談論
MAXIMIZE全球內存帶寬
,他們說,全球內存合併將提高帶寬。
我的問題,你如何計算全局內存帶寬。任何人都可以用簡單的程序例子來解釋我。
理論帶寬可以使用硬件規格來計算。
例如,NVIDIA GeForce GTX 280使用DDR RAM,存儲器時鐘頻率爲1,107 MHz,存儲器接口爲512位。使用這些數據項的NVIDIA GeForce GTX 280的理論峯值存儲器帶寬爲141.6 GB /秒:
在該計算中,存儲器時鐘速率被轉換到赫茲,乘以 接口寬度(除以8,將位轉換爲字節)並乘以2,這是由於雙倍數據速率。最後,將此產品除以109以將結果轉換爲GB/sec (GBps)。
有效帶寬是通過定時特定的程序活動以及知道程序如何訪問數據來計算的。爲了這樣做,使用此方程:
有效帶寬=((BR + BW)/ 109)/時間
在此,有效帶寬是在GBps的單位,Br爲字節數讀每 內核,Bw是每個內核寫入的字節數,時間以秒爲單位。
有關更多信息,請參閱CUDA最佳實踐指南。
http://stackoverflow.com/questions/7876006/how-to-calculate-the-achieved-bandwidth-of-a-cuda-kernel? – pQB