CUDA 版本 X 抱怨不支持 gcc 版本 Y - 该怎么办?

14

这个问题涉及特定版本的组合,但更普遍地具有相关性。

我刚刚从Kubuntu 12.04升级到14.04。现在,当我想编译CUDA代码(使用CUDA 6.5)时,我会得到以下错误:

#error -- unsupported GNU version! gcc 4.9 and up are not supported!

我安装了gcc-4.8(和4.7),并尝试使用这里建议的在/usr/local/cuda/bin中使用符号链接的解决方案:

CUDA incompatible with my gcc version

但是这个方法不起作用。我应该怎么办?

4个回答

20

这个解决方案适用于多种CUDA和GCC版本的组合。


您可以告诉CUDA的nvcc使用特定版本的gcc。假设您想要将gcc 4.7与CUDA 6一起使用,您可以运行以下命令:

sudo apt-get install gcc-4.7 g++-4.7

然后在你的 nvcc 命令行中添加以下开关:

nvcc --compiler-bindir /usr/bin/gcc-4.7  # rest of the command line here

如果您正在使用CMake进行构建,请在查找CUDA之前向您的 CMakeLists.txt 添加适当的设置,例如:

set(CUDA_HOST_COMPILER /usr/bin/gcc-4.7)  # -> ADD THIS LINE <-
find_package(CUDA)

此外,似乎clang也可以编译CUDA,也许值得尝试(虽然您必须适当地构建它)。
注意:某些Linux(或其他操作系统)发行版没有多个gcc版本的软件包(在同一版本的操作系统发行版中)。我建议不要尝试在旧版本上安装来自发行版的另一个版本的软件包,并考虑构建gcc。这并不完全简单,但是相当可行 - 当然,如果您没有对机器进行root访问,则这是您唯一的选择。

2

切换回支持的配置。在任何最近的CUDA发行版的入门文档中都列出了它们。

对于您当前列出的特定配置,您可能会更幸运地使用CUDA 7 RC,该版本现在可供注册开发人员使用。


1
我无法从系统中删除gcc 4.9,也不能因为这样微小的问题而降级发行版... - einpoklum
1
我已经切换到7,它运行良好并支持4.9。虽然你可能需要升级到Ubuntu 14.10。此外,它还具有很棒的C++11支持。 - flip

1

经常情况下,你会发现当你遇到这个问题时,CUDA已经有了更新的版本。例如,最初提出这个问题时,是关于CUDA 6和GCC 4.9的;CUDA 7支持GCC 4.9。CUDA 8支持GCC 5.x等等。


我有Cuda7.5,并且在使用Caffe时遇到了与问题相同的错误! - Mona Jalal
很不可能。也许您在更新版本的gcc上得到了类似的错误?CUDA 7.5支持gcc 4.9,但不支持gcc 5.x。 - einpoklum
好的,我之前使用的是GCC 5.x版本,我想表达的是我遇到了同样的错误。 - Mona Jalal
@MonaJalal:是时候升级到CUDA 8了。 - einpoklum

1

你没有看到任何因为这样做而产生的副作用,对吧? - Jacob Holloway
我没有注意到任何问题。一切似乎都正常工作。 - Conchylicultor
@Conchylicultor:CUDA 7.x与GCC 5.x之间存在多个已知的不兼容性。删除版本检查是不明智的。 - einpoklum
@einpoklum 可能吧,我想他们设置这个限制是有原因的,但是这个hack对我来说完美地解决了问题。只是出于好奇,比如说有哪些不兼容性呢? - Conchylicultor
某些标准库结构的编译失败让人摸不着头脑;出现奇怪的链接问题,由于我没有关于它们的缺陷报告,因此我忘记了细节。 - einpoklum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接