显卡GPU浮点运算的公式如下:
理论峰值 = 流处理器数目 X 2 X 显卡核心频率
以AMD的RV770为例,10个SIMD引擎,每个SIMD有16个SPU,每个SPU有5个流核心,核心频率750MHz,带入得
理论峰值1.2Tflops。我的显卡是HD3650,算的结果是0.6Gflops。程序实际运行时,能达到20%的峰值就时很高效的了。
以计算矩阵乘法,以前一篇文章的代码运算,经过g++优化,也需要大约5秒,而选择brook+的samples里面的简单
矩阵乘法的例子,大约需要0.47秒,加速比为10左右。
用优化的分块矩阵乘法对于2048X2048规模的矩阵做乘法运算,实际的浮点运算性能大概时22Gflops。由此可见,GPU
的加速性能还是很好的,一般而言,至少有10倍的加速吧。当然,这一方面依赖于显卡硬件,还依赖于算法的设计和程序的优化。
对于我的E2140来说,10倍的加速比,还是很诱人的。