我正在研究使用 GPU 处理流数据的方法。我有两个选择,但无法决定走哪条路?
我的标准如下:
- 易于使用(良好的 API)
- 社区和文档
- 性能
- future
我将在 linux 下用 C 和 C++ 编写代码。
最佳答案
OpenCL
- 从您的生产代码接口(interface)
- 可在不同的图形硬件之间移植
- 操作有限,但已准备好快捷方式
CUDA
- 独立语言 (CUDA C)
- 仅限 nVidia 硬件
- 几乎完全控制代码(使用类 C 语言进行编码)
- 大量分析和调试工具
底线——OpenCL 是可移植的,CUDA 仅适用于 nVidia。但是,作为一门独立的语言,CUDA 功能更强大,并且有很多非常好的工具。
- 易于使用 -- OpenCL 开箱即用更容易使用,但是一旦您设置了 CUDA 编码环境,它几乎就像在 C 中编码一样。
- 社区和文档 -- 两者都有大量的文档和示例,但我认为 CUDA 更好。
- 性能 -- CUDA 允许更好的控制,因此可以更好地微调以获得更高的性能。
- future ——真的很难说。
关于c++ - OpenCL 或 CUDA 走哪条路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644979/