CUDA会提供哪些数据处理问题?

时间:2010-06-01 12:29:38

标签: performance algorithm cuda cpu-architecture

我已经处理过许多数据匹配问题,并且经常可以快速并行地运行许多CPU密集型算法的实现,例如汉明/编辑距离。这是CUDA有用的东西吗?

您解决了哪些类型的数据处理问题?标准的四核英特尔台式机是否真的有所提升?

克里斯

5 个答案:

答案 0 :(得分:5)

我想你已回答了自己的问题。通常,CUDA / OpenCL可以加速大规模并行操作。我们使用CUDA执行各种DSP操作(FFT,FIR)并看到了数量级的加速。几百美元的数量级加速是一次抢断。虽然像MKL和OpenMP这样的专用CPU库给我们带来了相当大的速度提升,但CUDA / OpenCL的速度要快得多。

检查here以了解CUDA使用的示例

答案 1 :(得分:1)

首先,在SIGGRAPH '09中,他们展示了CUDA implementation of Vray for Maya。 200美元卡的实时光线跟踪和预览质量为20-fps?我认为这有很大帮助。

答案 2 :(得分:1)

是的,它是CUDA的主要领域。如果满足以下条件,效率最大:

  1. 元素的处理不依赖于其他处理的结果。
  2. 没有分支。或者至少相邻的元素以相同的方式分支。
  3. 元素在内存中均匀分布。
  4. 当然,实际上很少有任务属于这种情况。根据您从它们移动的距离,效率会降低。有时您需要完全重写算法以最大化使用率。

答案 3 :(得分:1)

CUDA已被用于极大地提高计算机断层扫描的速度,FASTRA project例如与超级计算机(不仅仅是四核桌面!)同时从消费者组装而来几千欧元的硬件。

我所知道的其他研究课题是群体优化和实时音频处理。

一般情况下:该技术可用于每个域,其中所有数据必须以相同的方式处理,因为所有核心都将执行同样的操作。如果你的问题归结为这种操作你很高兴:)。太糟糕了,不是一切都属于这一类...

答案 4 :(得分:1)

通常有两种类型的并行:任务并行和数据并行。 CPU在前者加速,GPU在后者加速。其原因在于CPU具有复杂的分支预测,无序执行硬件和多级流水线,可以让它们并行执行独立任务(例如,四核上的4个独立任务)。另一方面,GPU已经剥离了大部分控制逻辑,而是拥有大量的ALU。因此,对于具有数据并行性(简单例如矩阵添加)的任务,GPU可以利用其许多ALU来并行地对该数据进行操作。像汉明距离这样的东西对于GPU来说会很棒,因为你只计算两个字符串之间的差异数量,其中每个字符仅基于位置而不同,并且独立于同一字符串中的任何其他字符。