我已经处理过许多数据匹配问题,并且经常可以快速并行地运行许多CPU密集型算法的实现,例如汉明/编辑距离。这是CUDA有用的东西吗?
您解决了哪些类型的数据处理问题?标准的四核英特尔台式机是否真的有所提升?
克里斯
答案 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)
当然,实际上很少有任务属于这种情况。根据您从它们移动的距离,效率会降低。有时您需要完全重写算法以最大化使用率。
答案 3 :(得分:1)
CUDA已被用于极大地提高计算机断层扫描的速度,FASTRA project例如与超级计算机(不仅仅是四核桌面!)同时从消费者组装而来几千欧元的硬件。
我所知道的其他研究课题是群体优化和实时音频处理。
一般情况下:该技术可用于每个域,其中所有数据必须以相同的方式处理,因为所有核心都将执行同样的操作。如果你的问题归结为这种操作你很高兴:)。太糟糕了,不是一切都属于这一类...
答案 4 :(得分:1)
通常有两种类型的并行:任务并行和数据并行。 CPU在前者加速,GPU在后者加速。其原因在于CPU具有复杂的分支预测,无序执行硬件和多级流水线,可以让它们并行执行独立任务(例如,四核上的4个独立任务)。另一方面,GPU已经剥离了大部分控制逻辑,而是拥有大量的ALU。因此,对于具有数据并行性(简单例如矩阵添加)的任务,GPU可以利用其许多ALU来并行地对该数据进行操作。像汉明距离这样的东西对于GPU来说会很棒,因为你只计算两个字符串之间的差异数量,其中每个字符仅基于位置而不同,并且独立于同一字符串中的任何其他字符。