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

2020-04-14 09:11发布

So, if you try to use nvcc when the system GCC is version 5 and up, you get an "unsupported version" error. But - I've heard people report that they've just commented this out and that CUDA 7.5 "works for them" with GCC 5.x .

When I do the same, however (the check is in $CUDA_DIR/host_config.h), and compile something, I get the following errors:

/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

and a bunch of others, but those may be dependent on these. Now, these are MMX-related intrinsics for X86 architectures. I don't use them directly, so I'm guessing they're opted-in somehow. Perhaps this can be avoided?

Is there a way to overcome these errors and actually get GCC 5 to coexist with CUDA 7.5? And for code to build and run?

Notes:

  • I've read a suggestion to use -D__STRICT_ANSI__. I have, and it doesn't seem to help.
  • I'm on Fedora 22 in case it matters.

标签: c++ cuda gcc5
3条回答
Anthone
2楼-- · 2020-04-14 09:15

It's essentially futile to try to get GCC 5.x to work with CUDA 7.5 - there are some (or many?) incompatiblity issues which you simply can't resolve. Instead, just upgrade to CUDA 8.0 which has become available since this question was asked.

查看更多
Melony?
3楼-- · 2020-04-14 09:18

Consider installing and temporary selecting an older version of the gcc:

apt-get install gcc-4.8

Then update your alternatives:

update-alternatives --remove-all gcc
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10

After compiling TensorFlow you can use previous version of gcc calling above command with proper path to /usr/bin/gcc-5.x.

查看更多
成全新的幸福
4楼-- · 2020-04-14 09:34

I think a -D_MWAITXINTRIN_H_INCLUDED option should fix the issue. Actually I employed a slightly different approach, commenting out the #include <mwaitxintrin.h> line in x86intrin.h, and successfully built TensorFlow with CUDA 7.5 and GCC 5.2.1.

UPDATE

For the latest version of TensorFlow (v0.8.0), simply choose to use gcc 4.x when invoking the configure script.

查看更多
登录 后发表回答