Ubuntu1604装机系列(四):cuda8/cuda9及对应版本的cudnn安装

背景

笔者事先在ubuntu上安装了cuda9.0,然而在编译opencv3.1时候,发生了版本不匹配的冲突。遂又安装了cuda8.0,但二者极其cudnn的安装,如出一辙,在这里记录下安装过程。

cuda下载及安装

NVIDIA官网下载cuda8.0的安装run文件
注意安装时候不要sudo安装,同样的原因,若安装出错,可能难以卸载干净。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
./cuda_8.0.61_375.26_linux-run 注意不要更新显卡驱动,更改安装及链接库路径到个人指定目录下

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 9.0 Toolkit?
(y)es/(n)o/(q)uit: y

Enter Toolkit Location
[ default is /usr/local/cuda-9.0 ]: /home/tucodec/wuxj/cuda-9.0

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n

Install the CUDA 8.0 Samples?
(y)es/(n)o/(q)uit: y

Enter CUDA Samples Location
[ default is /home/tucodec ]: /home/tucodec/wuxj/cuda-8.0

安装完成后需要在系统内写入binlib搜索路径,以笔者的安装路径为例

1
2
3
vi ~/.bashrc
export PATH=$PATH:/home/<user name>/wuxj/cuda-8.0/bin:/home/<user name>/wuxj/cuda-9.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/<user name>/wuxj/cuda-8.0/lib64:/home/<user name>/wuxj/cuda-9.0/lib64

其中PATH为bin可执行程序路径,一般添加安装软件的terminal快速启动,LD_LIBRARY_PATH为依赖库的路径。
另外笔者同时安装了cuda8.0/cuda9.0,系统路径中哪个在前即可先被访问调用。而在cmake中会更加灵活,直接指定cuda安装目录便可以正确调用。

cudnn下载及安装

NVIDIA官网下载cudnn压缩文件(需先注册)。cudnn其实无需安装, 解压后即可看到里面是include头文件夹,及NVIDIA事先编译好的lib库。所以我们只需要将其复制到cuda对应目录即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd cudnn6

cp include/* ../../cuda-8.0/include/ # 复制到你cuda安装目录的对应文件夹

cp lib64/* ../../cuda-8.0/lib64/

cd ../../cuda-8.0/lib64/

sudo rm libcudnn.so

sudo rm libcudnn.so.6

sudo ln -sf libcudnn.so.6.0.21 libcudnn.so.6

sudo ln -sf libcudnn.so.6 libcudnn.so

兼容 cuda-8.0 和 cuda-9.0

1
2
3
4
5
6
7
8
9
10
function activate_cuda_80() {
echo "切换至 cuda-8.0 环境"
export PATH=/home/tucoder/Documents/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/home/tucoder/Documents/cuda-8.0/lib64:$LD_LIBRARY_PATH
}
function activate_cuda_90() {
echo "切换至 cuda-9.0 环境"
export PATH=/home/tucoder/Documents/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/home/tucoder/Documents/cuda-9.0/lib64:$LD_LIBRARY_PATH
}

安装成功

一些体会:Linux系统完美诠释了文件即一切,所有安装内容都暴露在外部,所有想删除的东西一键删除安装文件夹即可,强烈不推荐sudo安装。
pip可以用sudo安装,因为pip安装的软件很容易卸载
pip的安装目录:/usr/local/lib/python3.5/dist-packages/ /usr/local/lib/python3.5/dist-packages/,pip安的软件可以到该目录查看是否被安装好