2011-11-02 146 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