Ubuntu16.04下成功安装多版本的Cuda和切换Cuda环境 --Cuda9.0 & Cuda10.0

昨天跑个程序,报了以下错误:
libcudart.so.9.0: cannot open shared object file: No such file or directory

我的电脑环境是
cuda10.0,
torch1.2,
torchvision0.3.0.

后面查找知道torchvision0.3.0 支持的事cuda9,而不支持cuda10.0。
但一开始我并不想重装cuda。。。。
我安装我的上一篇博客的方法https://blog.csdn.net/c2250645962/article/details/105160102解除了
libcudart.so.9.0:
报错问题。

可是又报了新的错误。。。
libcudart.so.9.2: cannot open shared object file: No such file or directory
神奇。。。。。。。

所以决定安装多个版本的cuda,根据需求切换cuda环境。


1. 下载cuda9.0,链接如下:
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
在这里插入图片描述
在这里插入图片描述
2. 按照安装命令进行安装即可,安装完成后终端执行

cd /usr/local

可以看到local下面多了个cuda9.0的文件夹(我这里安装了三个cuda版本。。)
在这里插入图片描述

其中cuda是链接。

3. cuda环境设置
首先终端执行

gedit ~/.bashrc

在文件末尾添加如下内容(如果之前安装cuda有就不需要这一步了,不过一般之前安装过的话都不需要了)

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

注意看上面的路径都是指向/usr/local/cuda 软连接,并没有写死指向某一个cuda版本,这也方面了我们后面做cuda版本切换,只需要切换cuda软链接指向就可以了。
4. 版本切换
终端执行

cd /usr/local

然后执行

sudo rm -rf cuda

这一步是删除原有的软链接。
最后执行

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

这一步是创建了指向cuda-9.0的软链接。
我们可以通过终端执行

stat cuda
# 或者
nvcc -V

查看当前使用的cuda版本,看是否设置成功。

我设置ok后可是依然报了
libcudart.so.9.0: cannot open shared object file: No such file or directory
这个错误,
最后通过终端执行

sudo ldconfig /usr/local/cuda-9.0/lib64

解决(参考https://blog.csdn.net/qq_38451119/article/details/81007904)!

本以为OK了,又报了新的错误:
ImportError: /home/cendelian/anaconda3/envs/pytorch/lib/python3.6/site-packages/torchvision/_C.cpython-36m-x86_64-linux-gnu.so: undefined symbol: _ZN2at7getTypeERKNS_6TensorE

原来是我的torch版本和cuda版本不匹配。我现在torch版本是1.2,需要对应cuda10.0

Python 3.6.4 |Anaconda, Inc.| (default, Mar 13 2018, 01:15:57) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.version.cuda)
10.0.130
>>> 

所以我将torch版本降低到1.1。
可以通过

打开终端输入:python
输入命令:import torch
再输入:print(torch.version.cuda)

来查看torch对应的cuda版本。

至此!可以成功训练了!!

总结一下
代码需要torchvision0.3的包 -> cuda9支持torchvision0.3 -> torch1.1对应cuda9。。。

所以我从开始的环境cuda10.0,torchvision0.3,torch1.2变成了
cuda9.0,torchvision0.3,torch1.1(这几个也是代码的明确要求。。。。刚开始想偷工减料是不行的。。。。)

不过我用cuda9.0,torchvision0.3,torch1.1去跑其它程序又有奇怪的错误。。
这样就只能切换回cuda10.0了。。

参考
https://blog.csdn.net/qq_38451119/article/details/81007904
https://blog.csdn.net/u013925378/article/details/103045065
https://www.jianshu.com/p/9c98d51e4de3
https://blog.csdn.net/tunhuzhuang1836/article/details/79545625

原创文章 96 获赞 24 访问量 3万+

猜你喜欢

转载自blog.csdn.net/c2250645962/article/details/105177052