【问题标题】:OpenCL or CUDA Which way to go?OpenCL 或 CUDA 走哪条路?
【发布时间】:2011-02-08 08:30:01
【问题描述】:

我正在研究使用 GPU 处理流数据的方法。我有两个选择,但无法决定走哪条路?

我的标准如下:

  1. 易于使用(良好的 API)
  2. 社区和文档
  3. 性能
  4. 未来

我将在 linux 下用 C 和 C++ 编写代码。

【问题讨论】:

标签: c++ c cuda opencl


【解决方案1】:

OpenCL

  • 从您的生产代码接口
  • 可在不同的图形硬件之间移植
  • 有限的操作,但预先准备好快捷方式

CUDA

  • 单独的语言 (CUDA C)
  • 仅限 nVidia 硬件
  • 几乎完全控制代码(使用类 C 语言编码)
  • 大量分析和调试工具

底线——OpenCL 是可移植的,CUDA 仅适用于 nVidia。但是,作为一门独立的语言,CUDA 功能更强大,并且有很多非常好的工具。

  1. 易于使用 -- OpenCL 开箱即用更容易使用,但是一旦您设置了 CUDA 编码环境,它几乎就像在 C 中编码一样。
  2. 社区和文档 -- 两者都有大量的文档和示例,但我认为 CUDA 更好。
  3. 性能 -- CUDA 允许更好的控制,因此可以更好地进行微调以获得更高的性能。
  4. 未来——真的很难说。

【讨论】:

  • 其实使用OpenCL还有一个好处,它也可以在CPU中并行化任务。
  • @holydiver,本着这种精神,你可以说 Windows 和 MacOS X 都没有光明的未来:>
  • @Kornel 绝对,我看不到 MacOSX 和 Windows 的光明未来,我希望它们会在地狱中燃烧:p
  • @holydiver:不可移植的闭源软件永远不会消失。
  • 您列出了 CUDA 拥有自己的类似 C 语言的事实,但您没有提及用于编写 OpenCL 内核的类似 OpenCL C 的语言。
【解决方案2】:

我的个人经历是:

  1. API:OpenCL 的 API 稍微复杂一些。不过大部分时间都花在编写内核代码上,而这两者几乎是相同的。

  2. 社区:CUDA 拥有比 OpenCL 更大的社区,直到现在,但这可能会趋于平缓。

  3. 文档:两者都有很好的文档记录。

  4. 性能:我们创造了 OpenCL 驱动程序尚未完全优化的体验。

  5. 未来:未来在于 OpenCL,因为它是一个开放标准,不受供应商或特定硬件的限制!

这个评估是从 2010 年开始的,所以可能已经过时了。

【讨论】:

    【解决方案3】:

    除非您有特定的理由使用 CUDA,否则一直使用 OpenCL。除了在 GPU 上运行之外,OpenCL 还可以在 Intel i7 等多核上运行良好。通过使用 OpenCL,您可以在更广泛的硬件上运行它,从 Droid 手机到世界上最大的超级计算机 Blue Waters 的 IBM Power7 计算节点,预计将于明年上线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2011-01-25
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      相关资源
      最近更新 更多