ubtuntu 19.10 (代号Eoan Ermine )稳定版已于10月份正式发布,为了体验最新的功能,笔者已经毫不犹豫的安装体验了。因为日常学习与深度学习相关,而配置深度学习开发环境又是一件让人十分头疼的事,特写此文记录在Ubuntu 19.10上安装Nvidia显卡驱动以及CUDA的步骤,以备不时之需,同时也提供给广大网友作为参考。
诸如Tensorflow,PyTorch等深度学习工具,不同的版本对CUDA有着明确的版本要求;不同版本的显卡驱动也对应着不同版本的CUDA。因此,在安装前,明确自己的需求,确定合适的版本是十分重要的。笔者在这里给出显卡驱动程序版本与CUDA版本的对应关系,仅供大家参考!
图片参考自NVIDIA官方文件:NVIDIA官方文件,https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
正常安装系统的话,头文件和内核版本应该是已经对应好的,且安装完整的。保险起见,可以运行如下指令,查看内核版本,然后安装对应的头文件。
uname -r
sudo apt-get install linux-headers-$(uname -r)
显卡驱动和CUDA安装过程中会用到gcc和g++,所以务必确认这两项已经安装。可以在bash中运行如下指令查看gcc和g++是否已经安装:
gcc --version
g++ --version
如果gcc和g++已经安装,bash会输出对应的版本。如果输出未安装,可以运行如下指令安装:
sudo apt-get install gcc g++
ubuntu安装后,默认使用的是开源驱动,在安装nvidia驱动前,一定要禁用开源驱动,不然会导致一系列问题。禁用步骤如下:
(1). 在/etc/modprobe.d中创建文件blacklist-nouveau.conf
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf
(2). 在文件中添加如下内容
blacklist nouveau
options nouveau modeset=0
(3). 执行如下指令,更新系统配置
sudo update-initramfs –u
(4). 重启电脑,执行如下指令,查看是否禁用成功
lsmod | grep nouveau
如果没有输出,则表明nouveau禁用成功,反之,则没有成功,请仔细查看之前的步骤是否执行有误。
显卡驱动的安装目前来说主要有三种:1.使用ubuntu官方仓库安装;2.使用ppa仓库安装;3.使用Nvidia官方驱动手动安装。后两种安装方法操作步骤多,且失败概率较大,笔者之前就失败了很多次。第一种方法,操作简单,且非常容易成功,十分推荐该方法。本文介绍的也是第一种方法。
打开终端运行如下指令,检测NVIDIA显卡型号和推荐的驱动程序:
ubuntu-drivers devices
笔者的电脑运行后,输出如下:
输出中包含显卡型号,官方仓库中的驱动版本,以及推荐安装的驱动版本,笔者电脑推荐安装的版本是435。然后运行如下指令,安装推荐的驱动:
sudo ubuntu-drivers autoinstall
等待自动安装完成后,重启电脑。
(1). 如果驱动安装成功,系统会多一个名为NVIDIA X Server Settings的软件,打开后如下图所示:
(2). 进入 软件&更新,点击附加驱动标签,会有如下显示:
显示已经使用nvidia驱动,版本号为435。
(3). 打开终端,输入如下指令:
nvidia-smi
输出如下:
Driver Version为当前安装使用的驱动版本,CUDA Version为当前版本的驱动对应的CUDA版本。
上述3步验证均通过的话,则表明显卡驱动安装成功。
首先要根据自己的驱动程序版本,以及需要使用的深度学习工具(Tensorflow、PyTorch等)来确定需要的CUDA版本。当然,也可以使用2.3中的nvidia-smi命令来查看当前驱动对应的CUDA版本,笔者这里对应的CUDA版本是10.1。我们前往NVIDIA官方网站下载相应的CUDA安装程序。
CUDA:https://developer.nvidia.com/cuda-downloads
这个网址点进去都是最新的CUDA版本下载页面,如果要下载以前版本的话,点击页面上的Legacy Releases即可选择进入以前发布的版本下载页面。在这里,我们前往CUDA 10.1 Update 2的下载页面,网址如下:
CUDA-10.1 Update2:https://developer.nvidia.com/cuda-10.1-download-archive-update2
NVIDIA官方并没有给出对应于Ubuntu 19.10的安装文件,我们选择ubuntu 18.04就好,最终也是能够安装并运行的,我们选择下载runfile(local)文件进行安装,选择界面如下:
按照上面给出的指示,我们下载文件到~/Downloads目录,指令如下:
cd ~/Downloads
wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
为了确认下载的安装包的完整性,我们需要对安装包进行MD5校验,指令如下:
md5sum [filename]
将filename替换为你下载的CUDA安装文件名,官方给出的校验结果可以如下网址查看
cuda-10.1-update2-md5sum:https://developer.download.nvidia.cn/compute/cuda/10.1/Prod/docs3/sidebar/md5sum.txt
不同版本的CUDA,这个网址是不一样的,下载页面会给出这个网页的链接,笔者上面给出的是cuda-10.1-update2的md5sum校验码,其他版本的请自行查看。
CUDA的安装不同在图像界面下进行,需要在tty3终端下进行,使用快捷键Ctrl+Alt+F3即可进入tty3,然后输入用户名和密码即可进入系统。之后的安装步骤如下:
(1). 暂停lightdm服务
sudo service lightdm stop
(2). 进入安装文件所在目录,并赋予安装文件可执行权限
cd ~/Downloads
chmod a+x [cuda-install-filename]
笔者的安装文件在~/Downloads目录下,请将[cuda-install-filename]替换为自己下载的安装文件名。
(3). 运行安装指令
ubuntu 19.10自带的是gcc-9,然而目前的CUDA版本是不支持gcc-9的,所以安装过程中的环境检测可能会通不过,出现与current cuda version do not support gcc-9类似。所以,在安装时我们要屏蔽掉安装过程中的环境检测过程,做法是加上 –override flag,具体安装指令如下:
sudo ./[cuda-install-filename] --override
笔者的安装文件在~/Downloads目录下,请将[cuda-install-filename]替换为自己下载的安装文件名。
(4). 安装组件选择
运行上面的安装指令后,会出现文本构成的用户界面,Up和Down按键上下移动选项,Left和Right可以展开和收缩选项,Enter按键用来选择当前选项是否安装。
在这里我们需要注意的是,我们不需要安装cuda安装文件中自带的显卡驱动,因为我们之前已经安装过了。将光标移动到nvidia-driver那一项,然后按下Enter键,当前面的x消失,即表示已经取消这一组件的安装。(很遗憾,忘记拍安装界面了。)
大家也可以在里面自定义cuda组件的安装位置,我是保持默认的,默认安装位置在/usr/local/cuda-[version],同时会建立指向/usr/local/cuda的链接。
安装结束后,需要重启lightdm服务,重启指令如下:
sudo service lightdm start
然后使用快捷键Ctrl+Alt+F1重新返回用户图形界面。
到这里,安装并没有结束,我们还需要配置环境变量,我是在/etc/profile中配置环境变量的,在~/.bashrc中配置环境变量也可以,至于在这两个文件中配置环境变量的区别,大家可自行百度。
首先,打开/etc/profile文件,指令如下:
sudo gedit /etc/profile
然后在文件中添加如下内容
64位操作系统:
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
32位操作系统:
export PATH=/usr/local/cuda-10.1/bin:/usr/local/cuda-10.1/NsightCompute-2019.1${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
具体的路径和大家安装时的配置和系统有关,大家可以cd到安装目录看一下相应文件在自己系统上的名字,然后做出相应的修改。
/etc/profile的修改需要重启系统才能生效,大家也可以运行如下指令使其在当前终端有效:
source /etc/profile
建议大家还是重启一下系统,使其生效。系统重启后,打开终端,输入如下指令查看cuda版本
nvcc --version
前文在安装时,笔者提到过ubuntu 19.10自带默认的是gcc-9,而目前的cuda版本都是不支持gcc-9的,我们在安装时使用 –override 屏蔽了安装环境的检测,但是在运行测试代码时,部分测试在gcc-9下是无法编译的,我们给出如下的解决办法。
(1). 安装gcc-8:
sudo apt-get install gcc-8 g++8
(2). 将gcc-8和g+±8链接到cuda安装目录
sudo ln -s /usr/bin/gcc-8 /usr/local/cuda/bin/gcc
sudo ln -s /usr/bin/g++-8 /usr/local/cuda/bin/g++
然后,我们就可以编译测试代码进行cuda安装是否成功的测试了。
(3). deviceQuery测试
进入cuda samples目录,进入1_Utilities/deviceQuery目录,运行如下指令进行编译和运行:
make
./deviceQuery
如果cuda安装无误,输出如下
(4). bandwidthTest测试
进入cuda samples目录,进入1_Utilities/bandwidthTest目录,运行如下指令进行编译和运行:
make
./bandwidthTest
根据自己的cuda版本,去nvidia官网网站下载相应的cudnn文件,下载网址如下:
cudnn:https://developer.nvidia.com/cudnn
下载需要NVIDIA开发者账号并登录。我们安装的是cuda-10.1-update2,在这里我们下载两个文件,分别是
cuDNN Library for Linux
cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb)
(1). 解压并复制文件到CUDA安装目录
笔者的CUDA的安装路径为/usr/local/cuda,cudnn安装文件位于~/Downloads目录,具体指令如下:
cd ~/Downloads
tar -xzvf cudnn-<version>.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
(2). 链接文件
cd /usr/local/cuda
sudo rm -rf libcudnn.so.7 libcudnn.so
sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
sudo ldconfig
至此,cudnn的安装就完成了,下面进行测试
cudnn的测试代码和相关文件位于一个deb文件中,我们不需要安装这个文件,直接解压就能获得里面的文件。libcudnn-doc_
cd ~/Downloads
chmod a+x libcudnn-doc_<version>.deb ./cudnn_doc
解压后进入视力代码文件夹,我们使用mnistCUDNN进行测试,进入该文件夹,运行如下指令:
make
./mnistCUDNN
(1). 安装显卡驱动前,一定要屏蔽nouveau驱动
(2). 安装CUDA,一定要在tty3界面下安装,不能在图形用户界面下安装
(3). 安装CUDA时,不要安装CUDA附带的驱动
(4). 关于gcc版本过高的问题,在安装CUDA时,请使用- -override