GPU 编程,CUDA 还是 OpenCL? ?

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

  1. 如果我选择 CUDA —— Ubuntu 或 Windows 显然 CUDA 更适合 Windows,而在 Ubuntu 上安装 CUDA 可能是一个严重的问题。我看到一些博客文章声称已经在 Ubuntu 11.10Ubuntu 12.04上安装了 CUDA 5。然而,我还没有能够让他们工作。此外,标准 CUDA 教科书更喜欢在 Windows 域中工作,在 Unix/Ubuntu 安装和工作方面或多或少保持沉默。

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

有什么帮助或建议吗?

52911 次浏览

我认为在 ubuntu 上设置 Cuda 环境并不是很困难,你可以试一试。

作为一个计算机体系结构的学生,我认为你需要同时学习 OpenCL 和 CUDA。你应该首先学习 CUDA,因为 CUDA 暴露了更多的硬件和运行时信息,当你想优化你的 GPU 代码时,硬件意识是非常重要的。

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

  2. 在 Linux CUDA 中有一些奇怪的需求,比如使用 GCC 4.6或4.7。如果使用不同版本的 GCC,就不能再编译程序了。如果您使用 OpenCL,那么您可以使用任何编译器,因为您只需要链接到通用的 OpenCL 库即可。因此,OpenCL 更容易设置、使用和编译。一旦你编译了一个 OpenCL 程序,它可以在任何硬件上运行(只要它被编码成这样) ,即使它是用另一个品牌的 OpenCL SDK 编译的。

您可以编写 OpenCL 程序,这些程序将在 Nvidia、 AMD 和 Intel 硬件、 GPU、 CPU 和加速器上运行。更重要的是,Altera 正致力于在 FPGA 上支持 OpenCL!如果您使用 CUDA,您将不得不使用 Nvidia 图形处理器,并重写您的代码再次在 OpenCL 或其他语言的其他平台。从长远来看,使用 CUDA 的严重局限性和严重浪费时间的原因。

我看到有人张贴了一些 CUDA 和 OpenCL 之间的旧参考,但他们是旧的!当这些文档发布时,只有 AMD 适当地支持 OpenCL。自2013年以来,OpenCL 得到了 ARM、 Altera、 Intel 等公司的支持,并成为了一个行业标准。

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