【问题标题】:Trying to get CUDA 7.5 to work with GCC 5.x试图让 CUDA 7.5 与 GCC 5.x 一起工作
【发布时间】:2017-01-13 07:59:56
【问题描述】:

因此,如果您在系统 GCC 版本为 5 及更高版本时尝试使用 nvcc,则会收到“不支持的版本”错误。但是 - 我听说有人报告说他们刚刚对此发表了评论,并且 CUDA 7.5 与 GCC 5.x 一起“为他们工作”。

但是,当我做同样的事情(检查在$CUDA_DIR/host_config.h)并编译一些东西时,我得到以下错误:

/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/mwaitxintrin.h(36): error: identifier "__builtin_ia32_monitorx" is undefined
/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/mwaitxintrin.h(42): error: identifier "__builtin_ia32_mwaitx" is undefined

还有很多其他的,但这些可能取决于这些。现在,这些是 X86 架构的与 MMX 相关的内在函数。我不直接使用它们,所以我猜他们以某种方式选择加入。也许这可以避免?

有没有办法克服这些错误并真正让 GCC 5 与 CUDA 7.5 共存?以及要构建和运行的代码?

注意事项:

  • 我已经阅读了使用-D__STRICT_ANSI__ 的建议。我有,但似乎没有帮助。
  • 我在 Fedora 22 上以防万一。

【问题讨论】:

  • 这里有什么具体问题吗?
  • @talonmies:抱歉,我认为这很明显。见编辑。

标签: c++ cuda gcc5


【解决方案1】:

我认为-D_MWAITXINTRIN_H_INCLUDED 选项应该可以解决此问题。实际上我采用了一种稍微不同的方法,将x86intrin.h 中的#include <mwaitxintrin.h> 行注释掉,并使用CUDA 7.5 和GCC 5.2.1 成功构建了TensorFlow。

更新

对于最新版本的 TensorFlow (v0.8.0),只需在调用 configure 脚本时选择使用 gcc 4.x。

【讨论】:

  • TensorFlow 现在允许您手动指定要使用的 gcc。建议使用 gcc 4.x 而不是 gcc 5.x with hacks。
  • 您应该删除答案中过时的部分。
【解决方案2】:

考虑安装和临时选择旧版本的gcc

apt-get install gcc-4.8

然后更新您的替代方案:

update-alternatives --remove-all gcc
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10

编译 TensorFlow 后,您可以使用以前版本的 gcc 调用上述命令,并带有指向 /usr/bin/gcc-5.x 的正确路径。

【讨论】:

    【解决方案3】:

    试图让 GCC 5.x 与 CUDA 7.5 一起工作基本上是徒劳的 - 有一些(或许多?)不兼容问题是您根本无法解决的。相反,只需升级到自提出此问题以来就可用的 CUDA 8.0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多