【问题标题】:What kind of data processing problems would CUDA help with?CUDA 可以帮助解决什么样的数据处理问题?
【发布时间】:2011-02-26 08:13:05
【问题描述】:

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

您用它解决了哪些类型的数据处理问题?与标准四核英特尔台式机相比,真的有提升吗?

克里斯

【问题讨论】:

    标签: performance algorithm cuda cpu-architecture


    【解决方案1】:

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

    查看here 获取 CUDA 使用示例

    【讨论】:

      【解决方案2】:

      首先,在 SIGGRAPH '09 中,他们显示了 CUDA implementation of Vray for Maya。使用 200 美元的卡以 20 fps 的速度进行实时光线追踪和预览质量?我认为这很有帮助。

      【讨论】:

        【解决方案3】:

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

        1. 元素的处理不依赖于其他元素的处理结果。
        2. 没有分支。或者至少相邻元素的分支方式相同。
        3. 元素在内存中均匀分布。

        当然,很少有任务属于这种情况。根据您离他们多远,效率会降低。有时您需要完全重写您的算法以最大限度地提高使用率。

        【讨论】:

          【解决方案4】:

          CUDA 已被用于极大地提高计算机断层扫描的速度,例如,FASTRA project 的性能与 超级计算机(不仅仅是四核台式机!)相当,同时由消费级组装而成几千欧元的硬件。

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

          一般来说:该技术可用于所有域中所有数据必须以相同方式处理,因为所有核心都将执行相同的操作。如果您的问题归结为这种操作,那么您很高兴:)。可惜不是所有东西都属于这一类...

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-04-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-04-15
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多