因此,如果您在系统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__
的建议。我有,但它似乎没有帮助。答案 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。