Ubuntu18.04 APT方式安装CUDA10.0+cuDNN7.6.3

参考资料

  1. TensorFlow安装指南中的安装CUDA和cuDNN的方式是采用apt包管理器。TensorFlow安装指南-GPU支持
    包管理器的安装方式也是NVIDIA官方的安装指南中所推荐的,存在的不足是cuDNN可能不是最新的,但安装卸载都极为方便,并且不需要配置ld的链接库路径。
  2. NVIDIA官方的CUDA10.0安装指南。CUDA10.0官方安装指南
    对runfile以及deb等安装方式都进行了详细的说明以及安装前后的操作。
  3. NVIDIA官方的cuDNN安装指南。 cuDNN官方安装指南
    详细说明了各个平台的tar file和deb等安装方式。

1. 下载本地安装包

1.1 下载CUDA安装包

在CUDA历史归档中选择CUDA10.0,根据平台选择Linux -> x86-64 -> Ubuntu -> 18.04 -> deb(local),将下面的 base isntaller 和 patch1 下载到用户目录,或者使用wget
完成结果

$ ll
...cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
...cuda-repo-ubuntu1804-10-0-local-nvjpeg-update-1_1.0-1_amd64.deb

1.2 下载cuDNN安装包

因为cuDNN比较小,实际采用的是网络deb安装的方式,这里下载的deb只是用来添加仓库的。

$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb

2. 安装软件包

注意:安装CUDA是先要安装NVIDIA的显卡驱动程序的,这里假设已经安装好了NVIDIA的显卡驱动程序。默认安装CUDA10.0会将显卡驱动退回到410,由于已经安装了430,所以之后的安装将只安装toolkit部分而不安装driver部分。

2.1 添加本地和网络软件仓库

在下载目录执行

# Add NVIDIA package repositories
## base installer
$ sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-10.0.130-410.48/7fa2af80.pub
## patch1
$ sudo dpkg -i cuda-repo-ubuntu1804-10-0-local-nvjpeg-update-1_1.0-1_amd64.deb
## cnDNN
$ sudo dpkg -i nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb

$ sudo apt-get update

以上命令将三个包的仓库添加到apt中

2.2 安装软件包

  1. 先安装CUDA
$ sudo apt-get install cuda-toolkit-10-0

这里可以使用的三个包名如下

Meta PackagePurpose
cuda安装 Toolkit 包和 Driver 包,会默认安装10.1版本(最新的)以及对应的驱动,并且会自动更新
cuda-10-0安装10.0版本 Toolkit 包和 Driver 包(410),因为指定了版本所以不会自动更新只能手动安装新版本
cuda-toolkit-10-0只安装10.0版本 Toolkit 包,不装驱动,不会自动更新

所以上面的命令的意思是保留当前更新的驱动,以及使用apt upgrade时不自动更新。更多的 Meta Package 参考CUDA安装指南。

  1. 安装补丁包
$ sudo apt install cuda-nvjpeg-10-0 cuda-nvjpeg-dev-10-0
  1. 安装cuDNN
    首先查看仓库提供的cuDNN包括哪些版本
$ sudo apt-cache policy libcudnn7

libcudnn7:
...
  版本列表:
     7.6.3.30-1+cuda10.1 500
        500 http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Packages
     7.6.3.30-1+cuda10.0 500
        500 http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Packages
     7.6.2.24-1+cuda10.1 500
        500 http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Packages
     7.6.2.24-1+cuda10.0 500
        500 http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Packages

最新的版本为 7.6.3,官网最新为7.6.4,不过问题不大。这里我们要选择cuda10.0,所以加上dev包的安装如下

$ sudo apt-get install libcudnn7=7.6.3.30-1+cuda10.0 libcudnn7-dev=7.6.3.30-1+cuda10.0

完成安装,CUDA10.0+cuDNN7.6.3.

3. 安装完成后的操作

3.1 必须的操作

设置环境变量

编辑用户目录的 .bashrc 文件,添加

export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

3.2 推荐的操作

编译例程并测试

$ cd /usr/local/cuda-10.0/samples
$ make

编译好的二进制文件放在bin文件夹内。进入里面运行一个测试程序

$ cd bin/x86_64/linux/release
$ ./deviceQuery

在这里插入图片描述
如果得到一个类似上图的PASS的结果表示没有问题,还可以运行一些别的程序比如bandwidthTest.


版权声明:本文为Day1more原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。