试图让 CUDA 7.5 与 GCC 5.x 一起工作

Trying to get CUDA 7.5 to work with GCC 5.x

本文关键字:GCC 一起 工作 CUDA      更新时间:2023-10-16

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

我认为-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。

考虑安装并临时选择旧版本的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,自从提出这个问题以来,它已经可用。