cuda - GPU 编程、CUDA 还是 OpenCL?

标签 cuda gpgpu gpu

我是 GPU 编程的新手。我有一台配备 NVIDIA GeForce GT 640 卡的笔记本电脑。我面临两个困境,欢迎提出建议。

  1. 如果我选择 CUDA - Ubuntu 或 Windows 显然 CUDA 更适合 Windows,但在 Ubuntu 上安装可能是一个严重的问题。我看到一些博文声称在 Ubuntu 11.10 上安装了 CUDA 5和 Ubuntu 12.04 。但是,我无法让他们工作。另外,standard CUDA textbooks更喜欢在 Windows 域中工作,并且或多或少对 Unix/Ubuntu 安装和工作保持沉默。

  2. CUDA or OpenCL - 现在这可能比我的第一个问题更棘手!我主要遇到过使用 CUDA/Nvidia 的 GPGPU 项目,但 OpenCL 可能是开源中的下一个最佳选择,并且在 Ubuntu 中安装可能不会成为问题,尽管这里的一些建议将是最有用的。如果我选择 OpenCL 而不是 CUDA,我是否会牺牲任何功能?

有什么帮助或建议吗?

最佳答案

  1. 如果您使用 OpenCL,您可以轻松地在 Windows 和 Linux 上使用它,因为拥有显示驱动程序就足以运行 OpenCL 程序,而对于编程,您只需要安装 SDK 即可。 CUDA对特定GCC版本等有更多要求。但在Linux上安装也没有什么困难。

  2. 在 Linux 中,CUDA 有一些奇怪的要求,例如使用 GCC 4.6 或 4.7。如果您使用不同版本的 GCC,您将无法再编译您的程序。如果您使用 OpenCL,则可以使用任何编译器,因为您只需要链接到通用 OpenCL 库即可。因此 OpenCL 更容易设置、使用和编译。一旦编译了 OpenCL 程序,它就可以在任何硬件上运行(只要它经过编码),即使它是使用其他品牌的 OpenCL SDK 编译的。

您可以编写可在 Nvidia、AMD 和 Intel 硬件、GPU、CPU 和加速器上运行的 OpenCL 程序。更重要的是,Altera 正在致力于在 FPGA 上支持 OpenCL!如果您使用 CUDA,则必须仅使用 Nvidia GPU,并使用 OpenCL 或其他语言为其他平台重新编写代码。使用 CUDA 的严重限制,从长远来看会造成严重的时间浪费。

我看到有人发布了 CUDA 和 OpenCL 之间的一些旧引用,但它们已经旧了!当这些文档发布时,只有 AMD 正确支持 OpenCL。自2013年起,OpenCL得到ARM、Altera、Intel等公司的支持,并成为行业标准。

唯一的缺点是,由于 OpenCL 非常灵活,您将面临更多的选项和方法来在程序中编码内存分配、传输等。因此可能感觉更复杂。

关于cuda - GPU 编程、CUDA 还是 OpenCL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18014327/

相关文章:

c++ - 如何在 CUDA 设备上更改稀疏矩阵的子矩阵

c - Cuda 中的算法

c++ - 使用 CMake 编译 CUDA 时出现错误 "undefined reference to ` __cudaRegisterLinkedBinary"

无法在 opencl 中获取我的显卡设备

gpu - CPU和GPU的区别

c++ - 设置内核参数时的 CL_INVALID_ARG_SIZE

cuda - 是否可以启动一个在运行时定义了网格大小/ block 大小的 cuda 内核?

c - OpenCL 一维数组大数乘法

c++ - CUDA:二维网格中的线程 ID 分配

opencl - 可以跨越 OpenCL 内核在 CPU 和 GPU 上同时运行