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