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
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矩阵。
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++
添加回答
举报