引言
在使用CUDA的过程中,经常遇到的一个问题是,CUDA版本与深度学习框架如pytorch的版本不匹配,从而导致各种报错。因此,本文的目的是:
- 一、介绍在遇到此类问题时需要自行安装对应版本的CUDA工具包的方法;
- 二、尝试介绍清楚经常出现但又容易让人混淆的各种不同的版本。
一、安装特定版本的CUDA工具包
要安装某个版本的CUDA工具包,主要有以下三个步骤:
- 1、下载CUDA安装文件;
- 2、运行安装;
- 3、添加环境变量;
具体操作如下:
1、下载CUDA安装文件
(1)到英伟达官网的下载页面选择自己所需要的版本,以12.0版本为例:
(2)根据你的目标服务器选择对应的类型,注意 Installer Type 选 runfile(local)
(3)用wget命令下载即可
2、运行安装
用bash命令运行安装,安装时有几个比较重要的可选项,可以通过运行 bash cuda_12.0.0_525.60.13_linux.run --help
看到:
Options:
--silent
Performs an installation with no further user-input and minimal
command-line output based on the options provided below. Silent
installations are useful for scripting the installation of CUDA.
Using this option implies acceptance of the EULA. The following flags
can be used to customize the actions taken during installation. At
least one of --driver, --uninstall, --toolkit, and --samples must
be passed if running with non-root permissions.
--toolkit
Install the CUDA Toolkit.
--toolkitpath=<path>
Install the CUDA Toolkit to the <path> directory. If this flag is not
provided, the default path of /usr/local/cuda-12.0 is used.
其中 --toolkitpath 可以指定安装目录,如果不指定则默认安装在 /usr/local/cuda-12.0 下;
–toolkit 和 --silent 也要加上,分别表示安装CUDA toolkit 和 不打印一些安装信息;
例如:
bash cuda_12.0.0_525.60.13_linux.run --silent --toolkit --toolkitpath /home/user/cuda-12.0
3、添加环境变量
在~/.bashrc文件添加CUDA目录的环境变量,并source ~/.bashrc
export PATH=/usr/local/cuda-12.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib:$LD_LIBRARY_PATH
最后,可以用 nvcc --version 命令查看是否安装成功。
二、CUDA版本的区别
我们在使用CUDA的过程中,用于查看CUDA版本的 命令/代码 通常有以下三种:
- 1、nvidia-smi
- 2、nvcc --version
- 3、pytorch.version.cuda
它们分别表示硬件端、CUDA编译器和pytorch包的CUDA版本,在使用的过程中,如果这三者的版本不兼容或者有冲突,可能会导致程序报错。
注意:所谓代表硬件端的CUDA版本等只是笔者粗浅的理解,并非专业解释。想要了解更加底层的原理解释,可以参考 NVIDIA-SMI 显示的cuda version 是指当前版本还是最大可以支持的 cuda 版本?
1、nvidia-smi
在命令行输入 nvidia-smi 指令时,会出现以下界面:
2、nvcc --version
nvcc是CUDA程序编译器,因此nvcc --version显示的是编译器的CUDA版本,即 CUDA Toolkit 版本。
3、pytorch.version.cuda
在安装pytorch时,可以指定特定的CUDA版本。有时候受限于服务器端的CUDA版本,我们就需要安装特定CUDA版本的pytorch。比如,我们需要安装pytorch==1.12,其默认CUDA通常是11以上版本,但是服务器端的CUDA版本是10.2,那就需要我们去官网选择对应的版本安装,或者去下载wheel文件安装。
总结
当我们在项目中遇到CUDA相关的报错时,很多时候是CUDA版本的问题,需要自己尝试修改不同版本来解决,希望本文的内容可以帮助到你更好地处理这类问题。由于笔者能力有限,存在错误的地方敬请原谅。
参考资料
笔者在写本文时参考了非常多的资料,这些资料更加详细的介绍了CUDA相关的原理。在此分享给大家: