我处理过许多数据匹配问题,而且它们通常归结为快速并行运行许多 CPU 密集型算法的实现,例如汉明/编辑距离。这对 CUDA 有用吗?
你用它解决了什么样的数据处理问题?标准四核英特尔台式机真的有提升吗?
克里斯
我处理过许多数据匹配问题,而且它们通常归结为快速并行运行许多 CPU 密集型算法的实现,例如汉明/编辑距离。这对 CUDA 有用吗?
你用它解决了什么样的数据处理问题?标准四核英特尔台式机真的有提升吗?
克里斯
我想你已经回答了你自己的问题。一般来说,CUDA/OpenCL 加速大规模并行操作。我们使用 CUDA 执行各种 DSP 操作(FFT、FIR)并看到数量级的加速。几百美元的数量级加速是一种偷窃。虽然像 MKL 和 OpenMP 这样的专用 CPU 库给我们带来了相当大的速度提升,但 CUDA/OpenCL 更快。
在此处查看CUDA 使用示例
例如,在 SIGGRAPH '09 中,他们展示了Vray for Maya 的 CUDA 实现。使用 200 美元的卡以 20 fps 的速度进行实时光线追踪和预览质量?我认为它有很大帮助。
是的,它是 CUDA 的主要领域。如果满足以下条件,则效率最高:
当然,很少有任务属于这种情况。根据您离他们多远,效率会降低。有时您需要完全重写您的算法以最大限度地提高使用率。
CUDA 已被用于极大地提高计算机断层扫描的速度,例如,FASTRA 项目的性能与超级计算机(不仅仅是四核台式机!)相当,同时由消费级硬件组装而成,只需花费几千欧元。
我知道的其他研究主题是群体优化和实时音频处理。
一般来说:该技术可用于所有数据必须以相同方式处理的每个领域,因为所有内核都将执行相同的操作。如果您的问题归结为这种操作,那么您很高兴:)。太糟糕了,不是所有的东西都属于这一类......
通常有两种类型的并行:任务并行和数据并行。前者CPU加速,后者加速GPU。原因是 CPU 具有复杂的分支预测、乱序执行硬件和多级管道,可以让它们并行执行独立任务(例如,四核上的 4 个独立任务)。另一方面,GPU 已经剥离了大部分控制逻辑,取而代之的是大量的 ALU。因此,对于具有数据并行性的任务(简单的例如矩阵加法),GPU 可以利用其许多 ALU 并行处理这些数据。像汉明距离这样的东西对于 GPU 来说非常有用,因为您只是在计算两个字符串之间的差异数量,其中每个字符仅根据位置而有所不同,