OpenCL或CUDA走哪条路?

sys*_*ult 22 c c++ cuda opencl

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

我的标准如下:

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

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

Kor*_*icz 36

OpenCL的

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

CUDA

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

底线 - OpenCL是便携式的,CUDA仅适用于nVidia.然而,作为一种独立的语言,CUDA功能更强大,拥有许多非常好的工具.

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

  • 实际上使用OpenCL还有一个优势,它也可以并行化CPU中的任务. (9认同)
  • @holydiver,按照这种精神,你可以说Windows和MacOS X都没有光明的未来:> (4认同)
  • @holydiver:不可移植的闭源软件永远不会消失. (3认同)
  • @Kornel 绝对,我看不到 MacOSX 和 Windows 的光明未来,我希望它们会在地狱中燃烧:p (2认同)

Dan*_*vil 17

我的个人经历是:

  1. API:OpenCL的api稍微复杂一些.但是大多数时候你会花在编写内核代码上,而这两者几乎完全相同.

  2. 社区:CUDA现在拥有比OpenCL更大的社区,但这可能即将结束.

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

  4. 性能:我们的经验是,OpenCL驱动程序尚未完全优化.

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

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


Cha*_*ker 6

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