2

因此,如果您在系统 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 上,以防万一。
4

3 回答 3

3

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

更新

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

于 2016-02-01T13:34:34.077 回答
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.

于 2016-03-23T19:02:58.417 回答
2

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

于 2017-01-12T23:59:56.337 回答