GPU编程,CUDA或OpenCL?

我是GPU编程的新手。 我有一台配备NVIDIA GeForce GT 640显卡的笔记本电脑。 我面临着两难困境,build议最受欢迎。

  1. 如果我去CUDA – Ubuntu或Windows显然,CUDA更适合Windows,而在Ubuntu上安装则是一个严重的问题。 我已经看到一些博客宣称在Ubuntu 11.10和Ubuntu 12.04上安装了CUDA 5。 但是,我一直无法让他们工作。 此外, 标准的CUDA教科书更喜欢在Windows域中工作,在安装和使用Unix / Ubuntu时或多或less都是沉默的。

  2. CUDA或OpenCL – 现在这可能比我的第一个问题更棘手! 我大部分使用CUDA / Nvidia都遇到过GPGPU项目,但OpenCL可能是开源的下一个最佳select,在Ubuntu中安装可能不会成为问题,尽pipe这里的一些build议将是最有用的。 如果我使用OpenCL而不是CUDA,我会牺牲任何function吗?

任何帮助或build议?

  1. 如果您使用OpenCL,则可以在Windows和Linux上轻松使用OpenCL,因为具有显示驱动程序足以运行OpenCL程序,编程只需安装SDK即可。 CUDA对特定的GCC版本有更多的要求,但在Linux上安装也并不困难。

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

您可以在GPU,CPU和加速器上编写适用于Nvidia,AMD和Intel硬件的OpenCL程序。 更重要的是,Altera正在FPGA上支持OpenCL! 如果您使用CUDA,则只能使用Nvidia GPU,并使用OpenCL或其他语言重新编写代码以用于其他平台。 长期使用CUDA的严重局限性和严重浪费时间的原因。

我看到有人在CUDA和OpenCL之间发布了一些旧的引用,但是他们已经老了! 当这些文件出来的时候,只有AMD正确地支持OpenCL。 自2013年以来,OpenCL受到ARM,Altera,Intel等的支持,成为行业标准。

唯一的缺点是,由于OpenCL非常灵活,所以在程序中你将面临更多的select和方法来编码内存分配,传输等。 所以也许会感觉更复杂。

我觉得在ubuntu上设置cuda环境并不是很困难,你可以试试看。

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