c++ - OpenCL 或 CUDA 走哪条路?

标签 c++ c cuda opencl

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

我的标准如下:

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

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

最佳答案

OpenCL

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

CUDA

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

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

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

关于c++ - OpenCL 或 CUDA 走哪条路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644979/

相关文章:

c++ - 为什么某些类型(带有数组表示法)在没有 typedef 的情况下不能用作 C 中的返回类型?

cuda - cudaDeviceSynchronize 上的非法内存访问

c++ - 具有位表示的 bool vector 的自定义实现 - 如何实现 operator[]

c - 获取域名

c - 10x4 随机整数表不打印,打印零 C

cuda - 在 CUDA __device__ 函数的开始或结束处是否存在隐式屏障同步?

cuda - 如何计算正在启动的 CUDA 线程数?

c++ - 基于 BGL 的新类中的自定义函数 addEdge 的返回值应该是多少?

C++ 子字符串为什么要这样做?

c++ - Qt Serial Port - 一致读取数据