试图让CUDA 7.5与GCC 5.x一起使用

时间:2016-01-25 15:31:50

标签: c++ cuda gcc5

因此,如果您在系统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上遇到重要问题。

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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的正确路径。

答案 2 :(得分:2)

尝试让GCC 5.x与CUDA 7.5一起工作实际上是徒劳的 - 有一些(或许多?)不兼容问题,你根本无法解决。相反,只需升级到自问这个问题以来已经可用的CUDA 8.0。