【问题标题】:CUDA version X complains about not supporting gcc version Y - what to do?CUDA 版本 X 抱怨不支持 gcc 版本 Y - 怎么办?
【发布时间】:2015-03-16 13:58:31
【问题描述】:

问题是关于版本的特定组合,但更普遍。

我刚刚从 Kubuntu 12.04 升级到 14.04。现在,当我想编译 CUDA 代码(使用 CUDA 6.5)时,我得到:

#error -- unsupported GNU version! gcc 4.9 and up are not supported!

我安装了 gcc-4.8(和 4.7),并尝试使用此处建议的 symlinks-in-/usr/local/cuda/bin 解决方案:

CUDA incompatible with my gcc version

但这不起作用。我该怎么办?

【问题讨论】:

    标签: gcc cuda compatibility


    【解决方案1】:

    切换回支持的配置。它们列在任何最近的 CUDA 发行版的入门文档中。

    对于您当前列出的特定配置,您可能会更好地使用 CUDA 7 RC,它现在可供注册开发人员使用。

    【讨论】:

    • 我无法从我的系统中删除 gcc 4.9,或者将发行版降级为像这样小的东西......
    • 我切换到 7,它运行良好,并且支持 4.9。虽然您可能需要更新到 ubuntu 14.10。它还有 c++11,非常棒。
    【解决方案2】:

    此解决方案与 CUDA 和 GCC 版本的多种组合相关。


    您可以告诉 CUDA 的 nvcc 使用特定版本的 gcc。因此,假设您希望 gcc 4.7 与 CUDA 6 一起使用。您运行:

    sudo apt-get install gcc-4.7 g++-4.7
    

    然后将以下开关添加到您的nvcc 命令行:

    nvcc --compiler-bindir /usr/bin/gcc-4.7  # rest of the command line here
    

    如果您使用 CMake 构建,请在将 CUDA 查找到您的 CMakeLists.txt 之前添加适当的设置,例如:

    set(CUDA_HOST_COMPILER /usr/bin/gcc-4.7)  # -> ADD THIS LINE <-
    find_package(CUDA)
    

    此外,clang 似乎也可以编译 CUDA,也许这值得一试(尽管您必须适当地构建它)。

    注意:某些 Linux(或其他操作系统)发行版没有适用于多个 gcc 版本的软件包(在同一发行版的操作系统发行版中)。我建议不要尝试在旧版本上安装来自另一个发行版的软件包,而是考虑构建 gcc。这并不完全是微不足道的,但它是 quite doable - 当然,如果您没有对您的机器的 root 访问权限,这是您唯一的选择。

    【讨论】:

      【解决方案3】:

      很多时候你会发现当你遇到这个问题时,CUDA 已经有了newer releases。例如,问题的原始表述是关于 CUDA 6 和 GCC 4.9; CUDA 7 支持 GCC 4.9。 CUDA 8 支持 GCC 5.x 。以此类推。

      【讨论】:

      • 我有 Cuda7.5 并得到与 Caffe 问题相同的错误!
      • 不太可能。也许您对较新版本的 gcc 有类似的错误? CUDA 7.5 支持 gcc 4.9,但不支持 gcc 5.x
      • 嗯,我有 GCC 5.x 并试图说我有同样的错误
      • @MonaJalal:是时候升级到 CUDA 8 了。
      【解决方案4】:

      我在使用 CUDA Toolkit 7.5 和 gcc 5.2.1 时遇到了类似的问题。

      我确实修改了/usr/local/cuda/include/中的host_config.h文件:

      只需删除检查 gcc 版本的行。它确实解决了我的问题。

      感谢 Darren Garvey (https://groups.google.com/forum/#!topic/torch7/WaNmWZqMnzw)

      【讨论】:

      • 您没有看到任何副作用,是吗?
      • 我什么都没注意到。一切似乎都很好
      • @Conchylicultor:CUDA 7.x 和 GCC 5.x 之间存在多个已知的不兼容性。删除版本检查是不明智的。
      • @einpoklum 也许,我想他们设置这个限制是有原因的,但这个 hack 对我来说非常有效。只是出于好奇,例如不兼容是什么?
      • 某些标准库结构的神秘编译失败;奇怪的链接问题,我忘记了细节,因为我没有提交关于它们的错误。
      猜你喜欢
      • 2021-06-20
      • 2016-08-25
      • 2016-04-26
      • 2022-10-25
      • 2019-01-21
      • 1970-01-01
      • 2016-02-16
      • 2021-04-12
      • 2016-02-13
      相关资源
      最近更新 更多