在Ubuntu16.0.4 多个版本CUDA共存,并且随意切换

      在配置caffe和tensflow 时,往往需要的CUDA版本不一样,这就需要多个版本的CUDA共存,并且能够随意切换,免去了每次重新安装配置cuda的过程。

cuda_8.0.61_375.26_linux.run   文件名说明

前面的cuda_8.0.61代表cuda的版本,后面的375.26代表的对应的NVIDIA驱动的版本

1、安装CUDA

第二次安装CUDA跟第一次稍微不同:

Do you want to install a symbolic link at /usr/local/cuda? 

(y)es/(n)o/(q)uit: n

第二次按照此处最好选择n, 看下面的解释

#..一堆协议说明...
#直接按q退出协议说明.
zerozone@zerozone: accept/decline/quit: accept  #接受协议

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26? 
y)es/(n)o/(q)uit: n  #是否显卡驱动包,由于已经安装显卡驱动,选择n

Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y #是否安装工具包,选择y

Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]: #工具包安装地址,默认回车即可

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n #添加链接**注意这个链接,如果你之前安装过另一个版本的cuda,除非你确定想 
                      要用这个新版本的cuda,否则这里就建议选no,因为指定该链接后会将cuda指向 
                      这个新的版本**

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y #安装样例

Enter CUDA Samples Location
 [ default is /root ]:  #样例安装地址默认即可

# ***安装信息***
Installing the CUDA Toolkit in /usr/local/cuda-8.0 ...

Missing recommended library: libXi.so
Missing recommended library: libXmu.so
#注意,这里出现了Missing recommended library错误,
#是因为博主在第一次安装时,没有添加最开始的那条安装相关依赖的指令,
#之后我添加了依赖后,再次安装,就没有Missing错误了

Installing the CUDA Samples in /root ...
Copying samples to /root/NVIDIA_CUDA-8.0_Samples now...
Finished copying samples.

===========
= Summary =
===========
Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-8.0
Samples:  Installed in /root, but missing recommended libraries

Please make sure that
 -   PATH includes /usr/local/cuda-8.0/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.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-8.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.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 361.00 is required for CUDA 8.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_6388.log   
# ***安装完成***

安装完成后如下图所示:

解释:
cuda ----是软链接,指向的是cuda-8.0,因此对cuda的操作实际上就是对cuda-8.0文件夹的操作,
下面的操作中的*/cuda-8.0/* 等操作其实可以换成 /cuda/
cuda-8.0 --是cuda实际安装的文件(认为本次按照的是cuda-8.0)

cuda-9.0 ---是安装的第二个版本的CUDA
 

2、cuda安装后的配置

安装完毕后,再声明一下环境变量,并将其写入到 ~/.bashrc 的尾部:

本文以cuda8.0做示例

注意:环境变量写入的是想要使用的cuda版本所在的文件夹,根据需要更改

sudo gedit ~/.bashrc  #打开~/.bashrc文件

#####将以下内容写入到~/.bashrc尾部 #####
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

source ~/.bashrc   #source ~/.bashrc

 测试cuda的Samples,验证是否安装成功

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make    //该命令首次执行即可
sudo ./deviceQuery

cuda的卸载

sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl

sudo rm -r /usr/local/cuda-8.0 #运行完成之后,使用下面的命令删除残余

3、CUDNN的安装

同样以cuda-8.0示例

cd cuda/include/ 
sudo cp cudnn.h /usr/local/cuda-8.0/include/  #复制头文件 
cd ../lib64    #打开lib64目录 
sudo cp lib* /usr/local/cuda-8.0/lib64/    #复制库文件 
sudo chmod a+r /usr/local/cuda-8.0/include/cudnn.h /usr/local/cuda-8.0/lib64/libcudnn*    #给所有用户增加这些文件的读权限 

建立软连接
在终端输入

cd /usr/local/cuda-8.0/lib64/     #进入到lib64目录进行操做
sudo rm -rf libcudnn.so libcudnn.so.6 #删除原有动态文件
sudo ln -s libcudnn.so.6.0.21 libcudnn.so.6 #生成软衔接
sudo ln -s libcudnn.so.6 libcudnn.so #生成软链接

注意此处的 libcudnn.so.6.0.21、libcudnn.so.6 都是根据cudnn解压之后的文件定的,我用的是cudnn-8.0-linux-x64-v6 的所以此处是libcudnn.so.6.0.21、libcudnn.so.6

安装完成后可用 nvcc -V命令验证是否安装成功

4、CUDA多个版本切换

到/usr/local/ 目录下使用stat命令查看当前cuda软链接指向的哪个cuda版本,如下所示:

stat cuda

可以看到,文件类型是symbolic link,而指向的目录正是/usr/local/cuda-9.0,当我们想使用cuda-8.0版本时,只需要删除该软链接,然后重新建立指向cuda-8.0版本的软链接即可(注意名称还是cuda,因为要与bashrc文件里设置的保持一致)

sudo rm -rf cuda
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda

注意:修改完成之后,记住要修改文件 ~/.bashrc 中的相关路径,然后使用 stat cuda 和 nvcc -V 命令查看cuda版本,确定两个命令都指向同一个cuda版本才证明切换成功

参考文章:https://blog.csdn.net/ksws0292756/article/details/80120561

猜你喜欢

转载自blog.csdn.net/ytusdc/article/details/85173258