试图让 CUDA 7.5 与 GCC 一起工作 5.x
Trying to get CUDA 7.5 to work with GCC 5.x
因此,如果您在系统 GCC 版本为 5 及更高版本时尝试使用 nvcc,则会收到 "unsupported version" 错误。但是 - 我听说有人报告说他们刚刚评论了这个和 CUDA 7.5 "works for them" with 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,因为这个问题被问到后就可以使用了。
因此,如果您在系统 GCC 版本为 5 及更高版本时尝试使用 nvcc,则会收到 "unsupported version" 错误。但是 - 我听说有人报告说他们刚刚评论了这个和 CUDA 7.5 "works for them" with 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,因为这个问题被问到后就可以使用了。