问题描述
项目开发中,不同的项目可能对不同的cuda版本有所要求,常见的是这几种cuda-11.3//cuda-11.8//cuda-11.6,按照之前的认知,一个主机只能安装一个版本的cuda,否则会引起环境混乱,知道cuda底层逻辑的人都知道这有多么扯蛋,对吧。
也正是因为受到这个东西的折磨,今天通学了一下底层逻辑和具体实操。
解决办法
NVIDIA的显卡驱动与CUDA的版本并不是严格的一一对应关系,CUDA实际上也只是一个工具包,我们可以根据自己的需求进行安装,即可以安装多个CUDA版本。同时CUDNN是一个SDK,专门用于神经网络的加速包,它与CUDA也没有严格的一一对应关系,可以选择多个版本的CUDNN进行安装。虽然说不是严格的对应,不过还是要服从大版本的对应,即安装之前查看GPU驱动版本与CUDA版本的对应关系,选择对应的版本进行安装,避免不兼容而报错的错误。
1、cuda是什么?在系统架构扮演什么角色?
话不多说,直接上图
我们可以看出cuda还是比较底层的对吧,直接和硬件交互了嘛,那我们只需要根据具体需求选择不同的cuda版本就可以了,但是这个时候可能会出现一个问题,就是说显卡和cuda不兼容问题 , 这个的原则是这样的:高版本兼容低版本,但也有可能低版本的在高版本的情况下会出现运行异常(我就遇到过),这种就需要具体情况具体分析了!
ok,我们继续接着说。
2、不同版本cuda的下载
既然cuda这么底层,那么多安装几个cuda肯定也是没有问题的,这个思想有点像多系统主机,所以我们要做到的第一项工作便是如何下载对应所需版本的cuda(需要注意的是上面的图cudatoolkit在官网下载时候是CUDA Toolkit),这个自然最好的方式是去官网下载啦
CUDA Toolkit Archive | NVIDIA Developerhttps://developer.nvidia.com/cuda-toolkit-archive 但如果从官网下载就会出现一个不可避免的问题:下载速度太慢了!!!并且还可能下着下着就断了!!!烦死了(大圣表情包请自己脑补)!!!
所以需要多次下载才能真正100%,不信的话看我多苦,失败是成功之母,我真想说一句“c他老母”。
鉴于此,我下载好了,放在了百度云盘,需要的话我后面放在网盘分享出来,敬请期待,这样的话大家就下载快多了!!!
下载完成之后自然就是安装了啊
3、不同版本cuda的安装
3.1、不同文件格式的安装命令是不同的
3.1.1、runfile
我下载的是runfile所以执行
sudo sh cuda_版本号信息_linux.run
3.1.2、deb
但之前的话,下载的deb文件,说实话,deb文件还是挺好用的
sudo dpkg -i cuda_版本号_linux.deb
不过官网两个版本都有,可以自行抉择。
3.2、不同版本的安装过程是不同的
需要注意的是不同版本的安装前戏可能不同,比如cuda-8.0,需要阅读臭长的文档
但是cuda-11.3,界面就会清新很多
二者的安装过程也有区别,比如cuda-11.3,界面就很友好
但是cuda-8.0,就要敲一行看一行
总之,按照上面这一系列操作下来,就把cuda安装好了,需要几个安几个就行
接下来我们聊一下配置
4、cuda的配置
配置方面呢,需要注意的一点是,我们之前总能搜到这两种配置方法:文件配置和命令行配置。
4.1、文件配置
其中文件配置里的配置方式也有两种
sudo gedit ~/.bashrc
or
vim ~/.bashrc
然后在最后一行添加下述代码:
4.1.1、方式一,无版本说明
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
4.1.2、方式二,有版本说明
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64
export PATH=$PATH:/usr/local/cuda-11.8/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.8
添加完之后,需要更新配置文件,否则你就会怀疑自己,我明明改了,为什么没作用呢:
source ~/.bashrc
4.1.3、那上述方式二者区别是什么呢?
一般来说,单cuda直接说明版本就可以了,不需要配置其他的,但是也可以通过软链的方法把安装的版本连接过去,二者的作用是一样的,因为系统加载是靠加载bashrc文件的
sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda
4.2、命令行配置
需要注意的是,命令行的配置也需要文件配置的基础,只是需要知道,默认情况下的配置并不带版本号,所以修改软连接有用的的原因就在于这
sudo ln -s /usr/local/cuda-11.8 /usr/local/cuda
了解完这些基本知识,就要来看一下如何进行多版本cuda切换了
5、多版本cuda来回切换
例如从cuda11.8切换到11.3
第一步、查看cuda版本
nvcc -V
第二步、修改软链
删除已经存在的软链
sudo rm -rf cuda
重新建立软链
sudo ln -s /usr/local/cuda-11.3 /usr/local/cuda
第三步、再次查看cuda版本
nvcc -V
第四步、效果图
文章来源:https://www.toymoban.com/news/detail-777704.html
大功告成 !!!
完结撒花
我已经无法回头,但我会在这条路上走的更坚定文章来源地址https://www.toymoban.com/news/detail-777704.html
到了这里,关于【多版本cuda自由切换】在ubuntu上安装多个版本的CUDA,并且可以随时切换cuda-11.3//cuda-11.8//cuda-11.6//cuda-11.2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!