75

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

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

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

有什么帮助或建议吗?

4

2 回答 2

95
  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 非常灵活,您将面临更多的选择和方法来编写程序中的内存分配、传输等。因此,它可能会感觉更复杂。

于 2013-10-11T11:47:55.927 回答
10

我觉得在ubuntu上搭建cuda环境不是很困难,大家可以试试。

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

于 2013-08-02T14:52:53.357 回答