GPU编程,CUDA还是OpenCL?[关闭]


74

我是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,是否会牺牲任何功能?

有什么帮助或建议吗?


2
关于您的第一个问题,我觉得CUDA比Windows更好地支持Windows。过去,我在Linux下广泛使用CUDA,但是安装总是有些棘手。关于第二个问题,我认为您可以通过简单的Google搜索找到很多材料,例如CUDA vs OpenCL:我应该使用哪个?CUDA和OpenCL的2010之间的差异
JackOLantern

2
您可能会发现CUDA 5.5 Production Release易于在Linux中安装(请参阅developer.nvidia.com/content/…)。另外,可以在Linux下的CUDA 5.5中使用单GPU调试CUDA代码,计算能力为3.5或更高。不是您的情况,但是这对于linux用户来说是个好消息:)我不了解Windows调试要求。
pQB

1
@Arkapravo我正在使用Ubuntu。关于CUDA与OpenCL,很难回答。这是意见问题。基本上,我从CUDA开始就开始使用它,但从未发现有强烈的动力转向OpenCL。也许,通过简化,OpenCL可以为您提供更多的可移植性,而CUDA可以提供更高的性能。但是,要一言以蔽之。
JackOLantern

1
我已投票决定关闭此功能-它完全是主观的且没有主题。堆栈溢出不是分发建议和开放式讨论的地方,而是用于具体的编程问题及其解答。
talonmies

2
@talonmies我是这个主题的新手,我已经进行了充分的研究(如我所提供的链接所示),但是我正在寻找这样做的人的真实建议。我为我的问题辩护,它肯定有一个明确的答案,也不是没有话题。
Arkapravo

Answers:


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


1
只要您不打算使用Nvidia专有的东西(例如张量/光线跟踪核心),经过适当优化后,OpenCL的速度就与CUDA一样快。此外,您在Nvidia / AMD / Intel GPU,AMD / Intel / ARM CPU,FPGA等上具有大量的硬件灵活性,并且在Windows,Linux和MacOS上具有出色的兼容性。
ProjectPhysX

9

我认为在ubuntu上设置cuda环境不是很困难,您可以尝试一下。

作为计算架构专业的学生,​​我认为您需要同时学习OpenCL和CUDA。而且您应该首先学习cuda,因为CUDA会提供更多的硬件和运行时信息,当您要优化GPU代码时,硬件意识非常重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.