0

我在共享机器上,没有root。

我的代码因以下 CUDA 错误而死

CUDA driver version is insufficient for CUDA runtime version

我想为旧的工具包构建我的程序。我认为这是可能的,因为商业应用程序的分发支持比最新的工具包(?)更早的东西。

我玩过arch国旗,但没有成功。

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

编译到早期工具包版本的标志是什么?就我而言,我有一个版本4工具包,但我相信驱动程序只做 version 3

4

2 回答 2

2

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

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

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

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

于 2012-11-27T23:48:56.033 回答
1

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

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

在 .bashrc 中设置 CUDADIR=path/to/cuda/

一旦你有了它,如果你正在使用 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标志用于指定架构而不是工具包版本。

于 2012-11-27T23:52:23.537 回答