我有兴趣知道是否有人写了一个应用程序,需要优势的一个 通过使用,例如, 更CUDA.如果是这样,什么问题你有没有找到什么表现得你有没有实现与标准的CPU?

有帮助吗?

解决方案

我一直在做的器与发展 ATI的流SDK 而不是Cuda.什么样的性能,你将获得取决于一个 很多 的因素,但最重要的是该数字的强度。(是,该比率的计算操作记忆引用。)

一BLAS1级或BLAS级-2职能,如加两个矢量仅不1数学的动作每3存储器引用,因此NI(的1/3)。这始终是运行 CAL或Cuda不仅仅是在做的cpu。主要原因是所需的时间转移的数据从cpu gpu和回。

对于功能等FFT,有O(N记录N)计算和O(N)存储器引用,因此NI O(日志N)。如果N非常大,说1,000,000它将有可能以更快的速度在gpu;如果N小,说1,000它几乎肯定会更慢。

一BLAS3级或功能特点是可扩展性。像鲁分解的一个矩阵,或者找到其特征,有O(N^3)计算和O(N^2)存储器引用,因此NI O(N)。对于非常小的阵列,说N几个分数,这将仍然是更快做的cpu,但如N增加了,算法非常迅速地从存储器限来计算限制的性能增加在gpu上升的速度非常快。

任何涉及复杂的arithemetic有更多的计算比量运算中,这通常加倍的NI和增加gpu性能。


(资料来源: earthlink.net)

这里是CGEMM--复杂的单一精准矩阵阵乘做能4870.

其他提示

我已经写琐碎应用,这真的帮助,如果可以parallize浮点计算。

我发现了以下课程cotaught由伊利诺伊大学厄巴纳-尚佩恩分校尚佩恩教授和一个独工程师非常有用的,当我开始: http://courses.ece.illinois.edu/ece498/al/Archive/Spring2007/Syllabus.html (包括记录的所有讲座).

我已经使用CUDA几个图像处理算法。这些应用程序,当然,是非常适合用于CUDA(或任何GPU处理模式).

海事组织,有三种典型的阶段时移植的一个算法CUDA:

  1. 初期的移植: 即使有一个很基本的知识CUDA,可以口简单的算法内的几个小时。如果你是幸运的,你获得一系数为2到10。
  2. 琐碎的优化: 这包括使用纹理用输入数据和填补的多维阵列。如果你是有经验的,这可以在一天之内,并可能会给你另一个因素的10性。得到的编码是仍然可读。
  3. 铁杆优化: 这包括复制数据共享存储器,以避免全球存延迟,把代码里面出来的数量减少使用注册,等等。你可以花几个星期与这一步骤,但表现得是不是真的值得在大多数情况下。这一步骤后,你的代码将是如此模糊,没有人能理解它(包括您)。

这是非常类似于优化了一个代码,用于处理器。但是,响应的一个技术性能的优化更不可预测的比Cpu。

我一直在使用运动检测器(最初使用CG和现在CUDA)和稳定(使用CUDA)与图像处理。我已经得到大约10-20倍加速在这些情况。

从我读,这是相当典型的数据平行运算。

虽然我还没有得到任何实际经验CUDA然而,我一直在研究该问题,并发现一些文件,文件的积极结果的使用器Api(他们全都包括CUDA).

介绍了如何数据库联接可以paralellized通过创建一个数量的平行原语(地图,分散,收集等。) 它可以结合成一个高效率的算法。

在此 , 并行实施的AES加密的标准是创建具有可比性的速度谨慎的加密硬件。

最后,这个 分析如何以及CUDA适用的一些应用,例如结构化和非结构化的网格,联合逻辑的、动态的编程和数据挖掘。

我已经实施了Monte Carlo计算在CUDA对于某些金融使用。优化的CUDA码约500倍的速度比一个"可以试着困难,但不是真正的"多线程的CPU执行情况。(比较高的8800GT到Q6600这里)。它清楚地知道,蒙特卡罗的问题是令人尴尬的平行。

主要遇到的问题涉及的损失的精确度由于G8x和G9x芯片的限制IEEE个精密浮点数。与释放的GT200的筹码这可能是在某种程度上减轻通过使用双精单元,在一些成本的性能。我还没有尝试过了。

此外,由于CUDA是C扩展,将它们整合成另一个应用程序可以以非微不足道的。

我实现了一个遗传算法在GPU,并得到了速度的约7..更多的收益可能较高的数字强度如其他人指出的那样。所以,是的,收益是有的,如果应用程序是正确的

我写了一个复杂的价值矩阵乘内核打cuBLAS执行约30%用于应用程序,我使用它,而一种矢量外的产品功能运行几个数量级,比乘以跟踪解决其余的问题。

这是一个最后一年的项目。我花了一整年。

http://www.maths.tcd.ie/~oconbhup/Maths_Project.pdf

我已经实现乔因式分解为解决大型线性方程上GPU使用ATI流SDK。我的意见

alt text

有性能加速高达10倍。

工作上的相同的问题,以优化它更多,通过扩展到多个Gpu。

是的。我已经实现的 各向异性非线性过滤器的扩散 使用CUDA api。

它是相当容易的,因为它是一个过滤器,必须并行运行给出的输入图像。我还没有遇到许多困难,因为它只是需要一个简单的核心。加速在关于300x.这是我最后的项目上。该项目可以找到 在这里, (它是写在葡萄牙语你).

我已经试着写的 福德&Shah 分割算法太多,但已被一个痛苦的编写,由于CUDA仍然是在一开始所以很多奇怪的事情发生了。我们甚至看到的性能改进通过增加一个 if (false){} 在代码喜欢.

结果,为此分割的算法是不好的。我有一个的性能损失20倍相比,CPU方法(然而,由于这是一个CPU,一种不同的方法,yelded相同的结果可能被采取).它仍然是进展中的工作,但不幸被我离开实验室是我的工作上,因此也许有一天我可能完成它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top