Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCL或CUDA应该走哪条路?_C++_C_Cuda_Opencl - Fatal编程技术网

C++ OpenCL或CUDA应该走哪条路?

C++ OpenCL或CUDA应该走哪条路?,c++,c,cuda,opencl,C++,C,Cuda,Opencl,我正在研究使用GPU来处理流数据的方法。我有两个选择,但无法决定走哪条路 我的标准如下: 易用性(良好的API) 社区和文件 演出 未来 < >我将在Linux下的C和C++中编码。< /P> < P> OpenCL 从您的生产代码接口 不同图形硬件之间的可移植性 有限的操作但预先准备好的快捷方式 CUDA 独立语言(CUDA C) 仅限nVidia硬件 几乎完全控制代码(用类似C的语言编码) 很多分析和调试工具 一句话——OpenCL是可移植的,CUDA只是nVidia。然而,作为一

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

我的标准如下:

  • 易用性(良好的API)
  • 社区和文件
  • 演出
  • 未来

  • < >我将在Linux下的C和C++中编码。< /P> < P> <强> OpenCL<强/< /P>
    • 从您的生产代码接口
    • 不同图形硬件之间的可移植性
    • 有限的操作但预先准备好的快捷方式
    CUDA

    • 独立语言(CUDA C)
    • 仅限nVidia硬件
    • 几乎完全控制代码(用类似C的语言编码)
    • 很多分析和调试工具
    一句话——OpenCL是可移植的,CUDA只是nVidia。然而,作为一种独立的语言,CUDA的功能要强大得多,并且有很多非常好的工具

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

  • 我的个人经历是:

  • API:OpenCL的API稍微复杂一些。然而,大部分时间都花在编写内核代码上,这里两者几乎完全相同

  • 社区:CUDA有一个比OpenCL更大的社区,直到现在,但这可能会趋于平衡

  • 文档:两者都有很好的文档记录

  • 性能:根据我们的经验,OpenCL驱动程序尚未完全优化

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


  • 此评估是从2010年开始的,因此可能已经过时。

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

    实际上,使用OpenCL还有一个优势,它还可以在CPU中并行化任务。@holydiver,本着这种精神,你可以说Windows和MacOS X都没有光明的未来:>@Kornel绝对,我认为MacOSX和Windows的前景不太光明,我希望它们会在地狱中燃烧:p@holydiver:不可移植的封闭源代码软件永远不会消失。您列出了CUDA拥有自己的类似C语言的事实,但没有提到用于编写OpenCL内核的类似OpenCL C语言。另请参阅: