为了账号安全,请及时绑定邮箱和手机立即绑定

CUDA与我的gcc版本不兼容

CUDA与我的gcc版本不兼容

慕哥6287543 2019-12-10 10:52:32
我在编译CUDA SDK附带的一些示例时遇到了麻烦。我已经安装了开发人员驱动程序(版本270.41.19)和CUDA工具包,最后安装了SDK(均为4.0.17版本)。最初,它根本没有编译:error -- unsupported GNU version! gcc 4.5 and up are not supported!我在81:/usr/local/cuda/include/host_config.h中找到负责的行,并将其更改为://#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 6)从那时起,我只编译了几个示例,其结尾为:In file included from /usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr.h:162:0,             from /usr/include/c++/4.6/ext/atomicity.h:34,             from /usr/include/c++/4.6/bits/ios_base.h:41,             from /usr/include/c++/4.6/ios:43,             from /usr/include/c++/4.6/ostream:40,             from /usr/include/c++/4.6/iterator:64,             from /usr/local/cuda/include/thrust/iterator/iterator_categories.h:38,             from /usr/local/cuda/include/thrust/device_ptr.h:26,             from /usr/local/cuda/include/thrust/device_malloc_allocator.h:27,             from /usr/local/cuda/include/thrust/device_vector.h:26,             from lineOfSight.cu:37:/usr/include/c++/4.6/x86_64-linux-gnu/bits/gthr-default.h:251:1: error: pasting         "__gthrw_" and "/* Android's C library does not provide pthread_cancel, check for`pthread_create' instead.  */" does not give a valid preprocessing tokenmake[1]: *** [obj/x86_64/release/lineOfSight.cu.o] Error 1作为一些示例编译,我认为这不是驱动程序问题,而是与不支持的gcc版本有关。降级不是一种选择,因为此时gcc4.6将整个系统作为依赖项...
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

如前所述,nvcc取决于gcc 4.4。通过将软链接添加到使用nvcc安装创建的bin目录中,可以将nvcc配置为使用正确版本的gcc,而不传递任何编译器参数。


默认的cuda二进制目录(安装默认)是/ usr / local / cuda / bin,从该目录向正确的gcc版本添加软链接就足够了:


sudo ln -s /usr/bin/gcc-4.4 /usr/local/cuda/bin/gcc


查看完整回答
反对 回复 2019-12-10
?
繁花如伊

TA贡献2012条经验 获得超12个赞

CUDA不支持gcc 4.5和4.6-无法编译代码,并且其他工具链(包括cuda-gdb)将无法正常工作。您不能使用它们,并且该限制是不可协商的。

您唯一的解决方案是安装gcc 4.4版本作为第二个编译器(大多数发行版都允许这样做)。nvcc有一个选项--compiler-bindir,可用于指向备用编译器。创建一个本地目录,然后建立到支持的gcc版本可执行文件的符号链接。通过该--compiler-bindir选项将该本地目录传递给nvcc ,您应该能够编译CUDA代码而不会影响系统的其余部分。


编辑

请注意,此问题和答案与CUDA 4有关。

自编写以来,NVIDIA在新的CUDA工具链版本中继续扩展了对更高版本的gcc版本的支持。

  • 从CUDA 4.1版本开始,现在支持gcc 4.5。不支持gcc 4.6和4.7。

  • 从CUDA 5.0版本开始,现在支持gcc 4.6。不支持gcc 4.7。

  • 从CUDA 6.0版本开始,现在支持gcc 4.7。

  • 从CUDA 7.0版本开始,完全支持gcc 4.8,而在Ubuntu 14.04和Fedora 21上则有4.9支持。

  • 从CUDA 7.5版本开始,完全支持gcc 4.8,在Ubuntu 14.04和Fedora 21上有4.9支持。

  • 从CUDA 8版本开始,Ubuntu 16.06和Fedora 23完全支持gcc 5.3。

  • 从CUDA 9版本开始,在Ubuntu 16.04,Ubuntu 17.04和Fedora 25上完全支持gcc 6。

  • CUDA 9.2版本增加了对gcc 7的支持

  • CUDA 10.1版本增加了对gcc 8的支持

当前(从CUDA 10.1开始)在CUDA中不支持gcc 9。

请注意,NVIDIA最近在这里添加了一个非常有用的表,其中包含当前CUDA版本支持的编译器和OS矩阵。


查看完整回答
反对 回复 2019-12-10
?
智慧大石

TA贡献1946条经验 获得超3个赞

检查您的CUDA版本支持的最大GCC版本。


对于CUDA 10.1,10.2:8


对于CUDA 9.2,10.0:7


对于CUDA 9.0,9.1:6


对于CUDA 8:5


为该GCC版本设置环境变量。例如,对于CUDA 10.2:


MAX_GCC_VERSION=8

确保已安装该版本:


sudo apt install gcc-$MAX_GCC_VERSION g++-$MAX_GCC_VERSION

在CUDA文件夹中添加符号链接:


sudo ln -s /usr/bin/gcc-$MAX_GCC_VERSION /usr/local/cuda/bin/gcc 

sudo ln -s /usr/bin/g++-$MAX_GCC_VERSION /usr/local/cuda/bin/g++


查看完整回答
反对 回复 2019-12-10
  • 3 回答
  • 0 关注
  • 2659 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信