Linux系统安装多个CUDA版本与切换,正常AI模型训练

BCDBao 2024-10-11 12:31:01 阅读 90

一. 结论:

一个带显卡的环境系统能安装多个CUDA版本,但不能安装多个NVIDIA驱动版本,多个驱动版本会导致冲突,NVIDIA驱动能向下兼容CUDA版本,但不能向上兼容CUDA版本。

例如,一个系统已经安装好了CUDA11.4和对应的NVIDIA驱动,但又安装了CUDA11.8用于AI算法训练,此时AI算法训练使用的还是CUDA11.4,而不是CUDA11.8。(此时成功安装的CUDA11.8,并不是nvdia-smi显示的CUDA的版本号,而是CUDA Tookit对应的版本号)

建议: 如果想要支持真正的多个CUDA版本切换,并且用于AI算法训练,需要安装一个较高版本的NVIDIA驱动和CUDA版本,这样系统中将要安装的多个 CUDA 版本就都能正常切换和运行了。

二. 上述结论原因:

这里涉及到nvidia-smi和nvcc的区别,以及不同CUDA版本对应不同的NVIDIA驱动版本。

2.1 nvidia-smi和nvcc的区别

(1)执行nvcc -V命令,显示是CUDA Tookit对应的版本号,是为了确保与您正在编译的CUDA代码兼容,不提供有关GPU的实时状态信息。

(2)执行nvidia-smi命令,显示是cuda的版本号(每个cuda版本对应了不同驱动版本),提供有关系统中NVIDIA GPU的实时状态信息。如果用于AI算法训练,关注的是nvidia-smi这个输出信息。

2.2 不同CUDA版本对应不同的NVIDIA驱动版本

以CUDA 11.4和CUDA 11.8为例,需要的驱动版本不同。如果安装了CUDA 11.8对应的驱动,那么既能支持CUDA 11.8, 也能支持CUDA 11.4; 反之则不行。

三. 解决方案:

3.1 安装新CUDA版本和NVIDIA驱动和cuDNN库

如果已经安装了NVIDIA驱动版本,先卸载旧驱动,再安装新CUDA对应的驱动,如果没有安装过NVIDIA驱动版本,可以直接安装新CUDA版本,它会自动安装对应的NVIDIA驱动。再安装cuDNN库。这块内容网上很多,可以百度或谷歌一下。

3.2 切换不同的CUDA版本(以CUDA 11.4和CUDA 11.8为例)

(1)用软链接的方式切换不同的CUDA版本

 A. 执行vi ~/.bashrc, 写入CUDA 环境变量

<code># CUDA enviroment variable

export PATH=$PATH:/usr/local/cuda/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

再更新环境变量:

source ~/.bashrc

B. 删除原有软链接

# 假设以前安装的cuda-11.8

sudo rm -rf /usr/local/cuda

C. 新建软链接

# 假设cuda-11.4是新安装的cuda

sudo ln -s /usr/local/cuda-11.4 /usr/local/cuda

D. 执行nvidia-smi验证

(2)不用软链接方式

A. 执行vi ~/.bashrc,指定cuda版本以切换不同的CUDA版本

# cuda-11.4

#export PATH=$PATH:/usr/local/cuda-11.4/bin

#export CUDA_HOME=/usr/local/cuda-11.4

#export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH

# cuda-11.8

export PATH=$PATH:/usr/local/cuda-11.8/bin

export CUDA_HOME=/usr/local/cuda-11.8

export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH

再更新环境变量:

source ~/.bashrc

再执行nvidia-smi验证。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。