C++ 试图让CUDA 7.5与GCC 5.x配合使用

C++ 试图让CUDA 7.5与GCC 5.x配合使用,c++,cuda,gcc5,C++,Cuda,Gcc5,因此,如果您试图在系统GCC版本为5及更高版本时使用nvcc,则会出现“不支持的版本”错误。但是-我听说有人说他们刚刚评论了这一点,而且CUDA 7.5在GCC 5.x中“适合他们” 但是,当我执行相同的操作(检查位于$CUDA\u DIR/host\u config.h)并编译某些内容时,会出现以下错误: /usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/mwaitxintrin.h(36): error: identifier "__builtin

因此,如果您试图在系统GCC版本为5及更高版本时使用nvcc,则会出现“不支持的版本”错误。但是-我听说有人说他们刚刚评论了这一点,而且CUDA 7.5在GCC 5.x中“适合他们”

但是,当我执行相同的操作(检查位于
$CUDA\u DIR/host\u 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\u STRICT\u ANSI\u
    的建议。我有,但这似乎没有帮助
  • 如果有关系的话,我要戴Fedora 22

我认为包含一个
-D\u MWAITXINTRIN\u H\u选项应该可以解决这个问题。实际上,我采用了一种稍微不同的方法,注释了
x86intrin.h
中的
#include
行,并成功地使用CUDA 7.5和GCC 5.2.1构建了TensorFlow

更新


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

考虑安装并临时选择较旧版本的
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
试图让gcc 5.x与CUDA 7.5协同工作基本上是徒劳的-存在一些(或许多?)不兼容问题,您根本无法解决。相反,只要升级到CUDA 8.0就可以了。自从提出这个问题以来,CUDA 8.0已经可用。

这里有具体的问题吗?@Talonmes:对不起,我想这是显而易见的。请参阅edit.TensorFlow,现在您可以手动指定要使用的gcc。建议使用GCC4.x而不是GCC5.x进行破解。你应该删除答案中过时的部分。