【问题标题】:GPU Programming, CUDA or OpenCL? [closed]GPU 编程、CUDA 还是 OpenCL? [关闭]
【发布时间】:2013-08-03 13:44:36
【问题描述】:

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

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

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

有什么帮助或建议吗?

【问题讨论】:

  • 关于您的第一个问题,我感觉目前对 CUDA 的支持比对 Linux 更好。过去我在 Linux 下广泛使用过 CUDA,但安装总是有点棘手。关于你的第二个问题,我想你可以通过简单的谷歌搜索找到很多材料,例如CUDA vs OpenCL: Which should I use?Difference between CUDA and OpenCL 2010
  • 您会发现 CUDA 5.5 Production Release 很容易在 Linux 中安装(请参阅 developer.nvidia.com/content/…)。此外,可以在 Linux 下使用 CUDA 5.5 中的单 GPU 调试 CUDA 代码,计算能力为 3.5 或更高。不是你的情况,但这对 linux 用户来说是个好消息:) 我不知道 windows 调试要求。
  • @Arkapravo 我使用的是 Ubuntu。关于 CUDA 与 OpenCL,很难回答。这是一个意见问题。基本上,我从一开始就开始使用 CUDA,但从未找到转向 OpenCL 的强烈动力。也许,简化,OpenCL 会给你更多的可移植性,而 CUDA 更多的性能。但是,请对这句话持保留态度。
  • 我已经投票决定关闭这个 - 这完全是主观的和离题的。 Stack Overflow 不是提供建议和开放式讨论的地方,它旨在解决具体的编程问题及其答案。
  • @talonmies 我是这个话题的新手,我已经完成了足够的研究(如我提供的链接所示),但我希望从一直在做这件事的人那里得到一些真正的建议。我为我的问题辩护,它肯定有一个明确的答案,也不是离题。

标签: cuda gpgpu gpu


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

【讨论】:

  • 只要您不打算使用 Nvidia 专有的东西,例如张量/光线追踪核心,OpenCL 在适当优化后与 CUDA 一样快。此外,您还可以在 Nvidia/AMD/Intel GPU、AMD/Intel/ARM CPU、FPGA 等上获得大量的硬件灵活性,以及​​在 Windows、Linux 和 MacOS 之间的出色兼容性。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2018-12-05
    • 1970-01-01
    • 2013-09-19
    • 2013-05-02
    • 2012-11-21
    • 2012-01-26
    • 2021-02-15
    • 2014-09-18
    • 2011-03-24
    相关资源
    最近更新 更多