交叉编译到较旧的CUDA工具包版本?

交叉编译到较旧的CUDA工具包版本?,cuda,Cuda,我在一台共享的机器上,没有根 我的代码因以下CUDA错误而失效 CUDA驱动程序版本不适合CUDA运行时版本 我想为旧的工具包构建我的程序。我假设这是可能的,因为商业应用程序的发布支持比最新的工具包更早的东西(?) 我一直在玩arch标志,但没有成功 nvcc -arch=compute_13 fun.cu nvcc -arch=compute_20 fun.cu 编译到早期工具包版本的标志是什么? 在我的例子中,我有一个版本4toolkit,但我相信驱动程序只执行版本3,例如,我不知道命令行

我在一台共享的机器上,没有根

我的代码因以下CUDA错误而失效

CUDA驱动程序版本不适合CUDA运行时版本

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

我一直在玩
arch
标志,但没有成功

nvcc -arch=compute_13 fun.cu
nvcc -arch=compute_20 fun.cu
编译到早期工具包版本的标志是什么?
在我的例子中,我有一个版本
4
toolkit,但我相信驱动程序只执行版本
3
,例如,我不知道命令行标志或类似的选项可以告诉CUDA 4.x toolkit像CUDA 3.x toolkit那样运行

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

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


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

例如,我不知道命令行标志或类似选项会告诉cuda 4.x toolkit将其作为cuda 3.x toolkit使用

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

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


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

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

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

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

一旦有了它,如果您使用的是Makefile,就可以使用
$(CUDADIR)/bin/nvcc
作为编译器,库路径使用
$(CUDADIR)/lib64
,包含路径使用
$(CUDADIR)/include

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

另一种选择是在$PATH前面加上$CUDADIR/bin,如.bashrc中所示

CUDADIR=/home/username/cuda
export PATH=$CUDADIR/bin:$PATH
export LD_LIBRARY_PATH=$CUDADIR/lib64:$LD_LIBRARY_PATH
一旦你的系统被更新,你只需改变CUDADIR指向新位置的路径,你就不需要改变任何其他东西了


-arch
标志用于指定体系结构,而不是工具包版本

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

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

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

一旦有了它,如果您使用的是Makefile,就可以使用
$(CUDADIR)/bin/nvcc
作为编译器,库路径使用
$(CUDADIR)/lib64
,包含路径使用
$(CUDADIR)/include

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

另一种选择是在$PATH前面加上$CUDADIR/bin,如.bashrc中所示

CUDADIR=/home/username/cuda
export PATH=$CUDADIR/bin:$PATH
export LD_LIBRARY_PATH=$CUDADIR/lib64:$LD_LIBRARY_PATH
一旦你的系统被更新,你只需改变CUDADIR指向新位置的路径,你就不需要改变任何其他东西了


-arch
标志用于指定体系结构,而不是工具包版本

我发现我是在集群上运行的,我是在登录节点而不是计算节点上运行的。登录节点必须具有