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