Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
我想知道是否有人编写了通过使用GPGPU来利用nVidia CUDA的应用程序。如果是这样,与标准CPU相比,您发现了哪些问题以及获得了哪些性能提升?
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
2年前关闭。
Improve this question
我想知道是否有人编写了通过使用GPGPU来利用nVidia CUDA的应用程序。如果是这样,与标准CPU相比,您发现了哪些问题以及获得了哪些性能提升?
最佳答案
我一直在用ATI's stream SDK而不是Cuda进行gpgpu开发。
您将获得哪种性能提升取决于很多因素,但最重要的是数字强度。 (即,计算操作与内存引用的比率。)
BLAS级别1或BLAS级别2的功能(例如将两个 vector 相加)仅对3个内存引用进行1次数学运算,因此NI为(1/3)。使用CAL或Cuda的速度总是比仅在CPU上慢。主要原因是将数据从cpu传输到gpu并回传的时间。
对于像FFT这样的功能,有O(N log N)个计算和O(N)个内存引用,因此NI为O(log N)。如果N非常大,例如1,000,000,则可能会更快地在gpu上执行;如果N小,则说1,000,几乎可以肯定会慢一些。
对于BLAS 3级或LAPACK函数(如矩阵的LU分解)或找到其特征值,存在O(N ^ 3)个计算和O(N ^ 2)个存储引用,因此NI为O(N)。对于非常小的数组,比如说N是几个分数,在cpu上这样做仍然会更快,但是随着N的增加,该算法很快就会从内存限制变为计算范围,并且gpu的性能提高非常快很快。
涉及复杂算术的任何事物都比标量算术具有更多的计算量,这通常会使NI翻倍,并提高gpu性能。
(来源:earthlink.net)
这是CGEMM的性能-在Radeon 4870上完成的复杂单精度矩阵-矩阵乘法。
关于cuda - 您已成功使用GPGPU吗? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55403/
10-11 23:19