我是Cuda的新手,我正在尝试编译以下简单test_1.cu文件:
test_1.cu
#include <stdio.h> __global__ void kernel(void) { } int main (void) { kernel<<<1,1>>>(); printf( "Hello, World!\n"); return 0; }
使用这个: nvcc test_1.cu
nvcc test_1.cu
我得到的输出是:
In file included from /usr/local/cuda/bin/../include/cuda_runtime.h:59:0, from <command-line>:0: /usr/local/cuda/bin/../include/host_config.h:82:2: error: #error -- unsupported GNU version! gcc 4.5 and up are not supported!
我的gcc –version:
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
如何在不弄乱所有内容的情况下安装4.6和gcc的第二个版本?
答案是:
CUDA不支持gcc 4.5和4.6-无法编译代码,并且其他工具链(包括cuda-gdb)将无法正常工作。您不能使用它们,并且该限制是不可协商的。 您唯一的解决方案是安装gcc 4.4版本作为第二个编译器(大多数发行版都允许这样做)。nvcc –compiler- bindir有一个选项,可用于指向备用编译器。创建一个本地目录,并建立指向支持的gcc版本可执行文件的符号链接。通过–compiler- bindir选项将该本地目录传递给nvcc,您应该能够编译CUDA代码而不会影响系统的其余部分。
CUDA不支持gcc 4.5和4.6-无法编译代码,并且其他工具链(包括cuda-gdb)将无法正常工作。您不能使用它们,并且该限制是不可协商的。
您唯一的解决方案是安装gcc 4.4版本作为第二个编译器(大多数发行版都允许这样做)。nvcc –compiler- bindir有一个选项,可用于指向备用编译器。创建一个本地目录,并建立指向支持的gcc版本可执行文件的符号链接。通过–compiler- bindir选项将该本地目录传递给nvcc,您应该能够编译CUDA代码而不会影响系统的其余部分。
但是我不知道该怎么做
在线进行一些研究显示了完成此任务的几种方法。我只是测试了这里找到的方法:http : //www.vectorfabrics.com/blog/item/cuda_4.0_on_ubuntu_11.04,它对我来说就像一个魅力。它逐步指导您安装gcc 4.4和创建脚本以使用nvcc运行该版本。如果您喜欢尝试帖子中提到的方法,我建议您遵循该第一个链接来安装gcc4.4,然后按照您的帖子中所述创建符号链接。在Linux中创建符号链接是通过使用“ ln”命令完成的。
例如:
ln -s [source file/folder path] [linkpath]
该链接提供了一些在Ubuntu和Windows上创建符号链接的示例:http : //www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on- windows-or-linux/。希望这能为您指明正确的方向。