2012-11-27 146 views
0

我在共享机器上,没有root权限。交叉编译为旧的CUDA工具包版本?

我的代码与死亡下面CUDA错误

CUDA driver version is insufficient for CUDA runtime version

我想建立我的程序为老工具包。我会认为这是可能的,因为商业应用程序是在最新的工具包(?)的支持下发布的。

我玩过arch的标志,但没有成功。

nvcc -arch=compute_13 fun.cu 
nvcc -arch=compute_20 fun.cu 

什么标志可以编译为早期的工具包版本? 在我的情况下,我有一个版本4工具包,但我相信驱动程序只有版本3

+0

我发现我在群集上运行,而且我在登录节点上而不是计算节点上运行。登录节点必须有一些nvidia硬件。 – Mikhail

回答

2

例如,我不知道命令行标志或类似的选项来告诉CUDA 4.x工具箱的行为如同它是一个CUDA 3.x工具箱一样。

而且正如您发现的,对于特定版本的工具包,需要特定的驱动程序版本(或更新版本)。

一种方法是自行安装所需的工具包。您不需要root权限,但是您的用户目录中需要一些磁盘空间。选择所需的工具包from the archive并将其安装到用户目录空间的本地目录中。 (该工具包将提示您输入安装位置,并获得其他工具包安装选项,您可以执行此操作:sh <toolkit filename> --help)。将工具包安装到本地目录后,例如/ home/user/cuda,然后将PATH修改为include/home/user/cuda/bin(在任何其他cuda目录之前,例如/ usr/local/cuda/bin),并将LD_LIBRARY_PATH包含到/ home/user/cuda/lib和/ home/user/cuda/lib64(在任何其他cuda lib目录之前)。如果要使这些文件永久化,可以编辑.bashrc文件或使用类似的方法,具体取决于distro/shell。你应该能够正常输入你的nvcc编译命令。如果您链接到cublas等任何特定库中,则需要像往常一样使用-L编译器/链接器开关指向本地目录中的cublas库。

驱动程序不受任何此类影响,也不在诸如/ usr/local/cuda之类的社区位置安装cuda工具包。如果您还原PATH和LD_LIBRARY_PATH环境变量,则应恢复以前使用社区位置中安装的cuda工具包的功能。

1

首先,您需要下载并安装旧的工具包到您的主目录。

一旦完成,您可以执行以下操作。

设置CUDADIR =路径/到/ CUDA /在你的.bashrc

一旦你的,你如果你正在使用的Makefile,你可以使用$(CUDADIR)/bin/nvcc为你的编译器,并$(CUDADIR)/lib64你的库路径,$(CUDADIR)/include为你的包含路径。

如果您正在使用shell脚本或在命令行上编译,请使用$CUDADIR/bin/nvcc等。

另一种选择是将$ CUDADIR/bin预置到$ PATH中,如下所示.bashrc。

CUDADIR=/home/username/cuda 
export PATH=$CUDADIR/bin:$PATH 
export LD_LIBRARY_PATH=$CUDADIR/lib64:$LD_LIBRARY_PATH 

一旦你的系统进行更新,你可以改变通过CUDADIR指向新的位置的路径,你会不会有改变任何东西。

-arch标志将指定体系结构而不是工具包版本。