电脑存在多个不同版本的cuda,可能不同的框架需要的cuda版本也不一样,快速驾驭cuda版本切换很有必要,之前一直都是重装,卸载,也不敢去尝试,今天努力对着大神们的博客学习了一遍,居然成功了,做个记录以防止后续要用。
[参考链接]
首先声明一下我电脑驱动版本430.46最高了,还有cuda9.0已经存在。
1、安装cuda10.0
(注意选择[对应版本](https://developer.nvidia.com/cuda-10.0-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal),点击下载,推荐使用 runfile,安装很简单)
到CUDA Toolkit Download下载,我下载的是cuda_10.0.130_410.48_linux.run
2.进入Cuda10.0 安装
终端命令一定要切换到cuda_10.0.130_410.48_linux.run 的目录(即你下载的文件目录下面),执行下面两条命令安装:
sudo chmod +x cuda_10.0.130_410.48_linux.run # 为 cuda添加可执行权限
sudo ./cuda_10.0.130_410.48_linux.run # 安装
安装新的CUDA-10.0时记得不要选择安装驱动且不要生成软链接(这2步对应的是安装cuda10.0过程,键盘敲入n即可),安装完成后可以在/usr/local/下看到cuda-9.0和cuda-10.0两个文件夹(cudnn的安装是把一个.h头文件和几个lib放到cuda的对应目录下面,记得sudo cp的时候写到真实的cuda-10.0这样的路径下,不要写到cuda软链接路径就好,这样不影响版本对应)。
安装的过程会遇到几个选项:
先按q退出说明,直接进入下一步(不然等很久)
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81?
(y)es/(n)o/(q)uit: n # 不要安装驱动,之前已经安装好了
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]: # 一般选择默认即可,也可以选择安装在其他目录,在需要用的时候指向该目录或者使用软连接 link 到 /usr/local/cuda。
/usr/local/cuda-10.0 is not writable.
Do you wish to run the installation with 'sudo'?
(y)es/(n)o: y
Please enter your password:
Do you want to install a symbolic link at /usr/local/cuda? # 不要安装软链接,是否将安装目录通过软连接的方式 link 到 /usr/local/cuda,yes or no 都可以,取决于你是否使用 /usr/local/cuda 为默认的 cuda 目录。
(y)es/(n)o/(q)uit: n
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: n
开始安装
Installing the CUDA Toolkit in /usr/local/cuda-10.0 ...
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-10.0
Samples: Not Selected
Please make sure that
- PATH includes /usr/local/cuda-10.0/bin
- LD_LIBRARY_PATH includes /usr/local/cuda-10.0/lib64, or, add /usr/local/cuda-10.0/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-10.0/bin
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.0/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
sudo <CudaInstaller>.run -silent -driver
Logfile is /tmp/cuda_install_19751.log
好了,到这里cuda10.0成功安装了
下面就是重中之重,如何切换cuda9.0和cuda10.0版本
参考大神链接
保证多个CUDA版本共存的前提是NVIDIA的驱动都能够支持你所安装的CUDA版本,所以驱动的版本尽可能高,越新的驱动支持的CUDA版本越多,博主的438能够支持9.0和10.0。
在先前安装的CUDA的过程中,大家一般都会选择生成cuda-x.0文件夹的软链接/usr/local/cuda,这个文件夹是实际安装的cuda-x.0文件夹的链接,不包含实际文件,是方便系统设置环境变量直接调用cuda的,安装多个版本的CUDA,然后利用软链接就可以实现版本切换。
实现多版本CUDA共存的第一步,就是要将先前添加到**.bashrc文件**里的环境变量路径全部指向cuda软链接,也就是环境变量的路径里所有cuda-x.0的名字都改成cuda,如下:
终端输入`
gedit ~/.bashrc
#保存关闭后,执行下面命令,立即生效
source ~/.bashrc
ubuntn系统会弹出一个文件,.bashrc隐藏系统中,输入gedit ~/.bashrc,弹出如下文件在红色方框处添加
export CUDA_HOME=/usr/local/cuda
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
终端输入source ~/.bashrc 保存退出。
原先安装的是CUDA-9.0,所以nvcc -V指令可以获得版本信息:
安装新的CUDA-10.0时记得不要选择安装驱动且不要生成软链接,安装完成后可以在/usr/local/下看到cuda-9.0和cuda-10.0两个文件夹(cudnn的安装是把一个.h头文件和几个lib放到cuda的对应目录下面,记得sudo cp的时候写到真实的cuda-10.0这样的路径下,不要写到cuda软链接路径就好,这样不影响版本对应)。
将cuda-9.0切换成cuda-10.0的过程如下:
终端切换到/usr/local/下,
sudo rm -rf /usr/local/cuda #删除之前生成的软链接
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda #生成新的软链接
cat /usr/local/cuda/version.txt#查看当前cuda的版本
终端显示:
同理切换cuda9.0只需要sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda换成sudo ln -s /usr/local/cuda-9.0 /usr/local/cuda,其他的步骤都一样,好好学习一下吧。