2011-11-02 84 views
2

我正在學習CUDA優化。我在這個鏈接上找到了一個演示文稿:Optimizing CUDA by Paulius MicikeviciusCUDA:內存性能,什麼是全局內存帶寬

在這個演示中,他們談論

MAXIMIZE全球內存帶寬

,他們說,全球內存合併將提高帶寬。

我的問題,你如何計算全局內存帶寬。任何人都可以用簡單的程序例子來解釋我。

+1

http://stackoverflow.com/questions/7876006/how-to-calculate-the-achieved-bandwidth-of-a-cuda-kernel? – pQB

回答

7

理論帶寬可以使用硬件規格來計算。

例如,NVIDIA GeForce GTX 280使用DDR RAM,存儲器時鐘頻率爲1,107 MHz,存儲器接口爲512位。使用這些數據項的NVIDIA GeForce GTX 280的理論峯值存儲器帶寬爲141.6 GB /秒:

enter image description here

在該計算中,存儲器時鐘速率被轉換到赫茲,乘以 接口寬度(除以8,將位轉換爲字節)並乘以2,這是由於雙倍數據速率。最後,將此產品除以109以將結果轉換爲GB/sec (GBps)。

有效帶寬是通過定時特定的程序活動以及知道程序如何訪問數據來計算的。爲了這樣做,使用此方程:

有效帶寬=((BR + BW)/ 109)/時間

在此,有效帶寬是在GBps的單位,Br爲字節數讀每 內核,Bw是每個內核寫入的字節數,時間以秒爲單位。

有關更多信息,請參閱CUDA最佳實踐指南。

+0

106從哪裏來... – veda

+0

我很抱歉。我必須使用Google公式......這只是轉換爲Hz – Yappie

+0

有關最大化帶寬的短語通常意味着「雖然您的帶寬低於理論值,但您的代碼性能僅限於計算」。你的目標是達到理論帶寬或接近它 – Yappie