Nvidia CUDA实战--稀疏矩阵求解调用CUBLAS实测

xin_200 2008-04-18 02:38:47
目前显卡的浮点性能远高于CPU,一些数据运算密集型的程序采用显卡运算后,性能有数量级的提升。但更多的科学计算仅部分模块是密集型的,例如稀疏矩阵的LU分解,具体效果显然依赖于具体问题。以下是稀疏矩阵求解(GSS)调用Nvidia CUDA 1.1的初步测试结果,供大家参考。

稀疏矩阵求解是科学计算的基本模块,往往是时间瓶颈,因此是高性能计算的重要研究方向,其中就包括稀疏LU分解的高效实现。通过多波前法等算法,稀疏LU分解主要的运算量由BLAS-3完成,而BLAS-3是典型的密集型运算,适合由GPU来完成。其它运算则仍由CPU来处理,尤其是内部复杂的逻辑指令,是不适合放到GPU上的。稀疏LU分解的令一个问题是需要大量存储,往往超过显存的容量,这使得整个程序无法用kernel实现,必然带来额外的数据交换。总之,许多科学计算都会遇到类似的问题:1、仅部分运算是密集型;2、程序空间大于显存空间,带来数据交换等额外开销。

测试环境
1 测试集
采用了来自UF sparse matrix collection 的12个算例,具有一定的代表性,见下表。
2 硬件
AMD Athlon 64X2 4000+。2G DDR2 667内存。
Nvidia 8600 GT 256M DDR3显存,实测带宽:host->device: 1.5G/s, device->host: 0.67G/s
3 软件:
稀疏求解器采用GSS 2.0(GRUS SPARSE SOLVER)。对比了GSS采用MKL-BLAS与CUBLAS的数值分解时间,CUBLAS来自Nvidia CUDA 1.1, 实测性能远高于MKL-BLAS,但调用CUBLAS又需要额外的开销。实测结果见下表,其中比值是采用CUBLAS的时间与采用MKL的时间之比。



就测试结果看,CUBLAS和MKL-BLAS总体上相当,都有占优的例子。例如ZHAO1算例,GSS采用CUBLAS速度提高3倍;而rma10算例,采用CUBLAS后要慢30%。这是由于采用CUBLAS需要一些额外的开销,这里主要是把计算结果从显卡复制到内存的时间。在某些情况下,这些额外的开销抵消了CUBLAS本身节省的时间。

在这个初步的测试中,GPU的潜力并未被充分挖掘,例如可以将更多的模块转化为kernel。但在进一步优化之前,我宁可等待双精度CUBLAS的发布。对于矩阵求解来说,单精度版本只有参考价值,例如INTEL PARDISO等商业求解器甚至不提供单精度版本。

结论:
1、部分密集型运算的科学计算,仍可通过GPU提高性能。
2、双精度GPU运算是急需解决的问题。比如要从一辆老爷车和一架带炸弹的飞机中选择,我想大多数人会选择前者出行。

...全文
1620 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
随风3188 2011-10-19
  • 打赏
  • 举报
回复
楼主能不能详细的讲讲你的测试过程?谢谢了~~~
xin_200 2011-04-08
  • 打赏
  • 举报
回复
这个测试是08年做的,仅供参考。特别是结论的第2点,当时显卡计算并不支持双精度。现在的显卡基本都支持双精度计算,因此请大家忽略第2点。
不过双精度计算仍然是CUDA的弱项,CPU的浮点性能提升也很快。10年之内,是CPU快,还是GPU快(确切的说:是INTEL的财力大,还是NVIDIA的财力大)还有的看呢。
xin_200 2011-04-08
  • 打赏
  • 举报
回复
最新的GPU版本已由MatrixPro负责销售,参见http://www.matrixprosoftware.com/
lumianph 2010-01-26
  • 打赏
  • 举报
回复
楼主有最新的进展么?关于direct sparse matrix solver on GPUs
xin_200 2008-04-19
  • 打赏
  • 举报
回复
就NVIDIA CUDA论坛上的一些评价,cublas的性能要高于kernel。不过这不是关键,GPU无疑是速度之王。但对具体应用来说,还有很多别的因素要考虑。例如稳定,可靠对矩阵求解来说很重要,而单精度运算是无法满足要求的。所以我觉得双精度版本似乎比进一步提高CUDA性能更重要。
darkstorm2111203 2008-04-18
  • 打赏
  • 举报
回复
cublas最好和kernel搭配使用,尽量在gpu上完成运算...
现在单用cublas感觉不咋地...作为kernel的补充比较省事而已...

353

社区成员

发帖
与我相关
我的任务
社区描述
CUDA高性能计算讨论
社区管理员
  • CUDA高性能计算讨论社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧