网上关于Ubuntu16.04及14.04安装cuda、cudnn等的教程较多,Ubuntu18.04的介绍很少。本文主要介绍Ubuntu18.04下如何安装英伟达驱动以及cuda、cudnn和Anaconda等编程环境。
博主硬件为ThinkPadT450(GeForce 940M显卡),双固态硬盘双系统(Ubuntu和Windows10),具体怎么安装百度教程很多,这里就不做介绍了。
让我们进入正题:
下载:cuda、cudnn、NVIDI
cyg@cyg-ThinkPad-T450:~$ lspci | grep -i nvidia
04:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940M] (rev a2)
cyg@cyg-ThinkPad-T450:~$ lsmod | grep nouveau
如果有输出说明nouveau正在加载
打开禁用列表
cyg@cyg-ThinkPad-T450:~$ sudo gedit /etc/modprobe.d/blacklist.conf
在打开文本的最后一行添加:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
执行以下命令来禁止内核中nouveau
cyg@cyg-ThinkPad-T450:~$ echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
更新,重启
cyg@cyg-ThinkPad-T450:~$ update-initramfs -u
cyg@cyg-ThinkPad-T450:~$ sudo reboot
再次查看是否禁用nouveau
cyg@cyg-ThinkPad-T450:~$ lsmod | grep nouveau
以上步骤可能是Ubuntu18.04的非必要操作,如果是单显卡主机,禁用nouveau驱动重启后可能会导致无法进入Ubuntu图像界面,可以按Ctrl+Alt+F3,Ubuntu18.04好像是F3,16.04是F1进入文本编辑界面安装NVIDI显卡驱动,可以参考这篇文章进行相应的设置。
实际上,博主在执行完以上步骤后,并没有重启电脑,直接执行以下操作,替换为英伟达驱动即完成了显卡的更新。
重点:
1.首先删除旧的NVIDIA驱动:
cyg@cyg-ThinkPad-T450:~$ sudo apt-get purge nvidia-*
2.添加Graphic Drivers PPA
cyg@cyg-ThinkPad-T450:~$ sudo add-apt-repository ppa:graphics-drivers/ppa
cyg@cyg-ThinkPad-T450:~$ sudo apt-get update
3.寻找驱动版本
cyg@cyg-ThinkPad-T450:~$ ubuntu-drivers devices
4.安装好 最新的驱动
cyg@cyg-ThinkPad-T450:~$ sudo apt-get install nvidia-396
5.重启
cyg@cyg-ThinkPad-T450:~$ sudo reboot
6.挂载nvidia驱动
cyg@cyg-ThinkPad-T450:~$ nvidia modprobe nvidia
7.查看驱动的安装状态
cyg@cyg-ThinkPad-T450:~$ sudo nvidia-smi
8.打开nvidi驱动设置程序
cyg@cyg-ThinkPad-T450:~$ sudo nvidia-settings
9.在终端输入命令,实时查看GPU的使用情况:
cyg@cyg-ThinkPad-T450:~$watch -n 1 nvidia-smi
10.到Ubuntu18.04系统的“软件和更新” 选择相应的附加驱动
博主尝试安装过9.1版和10.0版的cuda和cudnn,都没有成功。9.1版的可能是因为cudnn用的是9.0的导致没有编译成功。后来试用9.0版本编译成功,如果想要尝试9.0外的其他版本,可以参考链接
参考下载链接下载9.0版本的cuda和cudnn,博主下载的是16.04的本地运行文件runfile(local),需要下载一个运行程序和相应的补丁,所有文件如下:
cuda_9.0.176_384.81_linux.run
cuda_9.0.176.1_linux.run
cuda_9.0.176.2_linux.run
cuda_9.0.176.3_linux.run
cuda_9.0.176.4_linux.run
cudnn下载cudnn7.05 for 9.0,如果是9.1的cuda则需要选择for9.1的
下载完所有文件就可以开始安装了,因为CUDA 9.0仅支持GCC 6.0及以下版本,Ubuntu18.04gcc,g++版本较高,所有先要替换成低版本的gcc,g++:
1.安装4.8版本
cyg@cyg-ThinkPad-T450:~$ sudo apt-get install gcc-4.8
cyg@cyg-ThinkPad-T450:~$ sudo apt-get install g++-4.8
2.cd到/usr/bin目录下,将它改为链接到gcc-4.8
cyg@cyg-ThinkPad-T450:~$ ls -l gcc*
cyg@cyg-ThinkPad-T450:~$ sudo mv gcc gcc.bak
cyg@cyg-ThinkPad-T450:~$ sudo ln -s gcc-4.8 gcc
对g++进行同样的操作
cyg@cyg-ThinkPad-T450:~$ ls -l g++*
cyg@cyg-ThinkPad-T450:~$ sudo mv g++ g++.bak
cyg@cyg-ThinkPad-T450:~$ sudo ln -s g++-4.8 g++
查看版本:
cyg@cyg-ThinkPad-T450:~$ gcc --version
cyg@cyg-ThinkPad-T450:~$ g++ --version
3.安装cuda9.0
cyg@cyg-ThinkPad-T450:~$ sudo sh cuda_9.0.176_384.81_linux.run
cyg@cyg-ThinkPad-T450:~$ sudo cuda_9.0.176.1_linux.run
cyg@cyg-ThinkPad-T450:~$ sudo cuda_9.0.176.2_linux.run
cyg@cyg-ThinkPad-T450:~$ sudo cuda_9.0.176.3_linux.run
cyg@cyg-ThinkPad-T450:~$ sudo cuda_9.0.176.4_linux.run
一直按回车键安装,碰到是否安装Driver可以选择否(因为之前已经安装),Samples也可以不安装
4.添加环境变量,修改配置
cyg@cyg-ThinkPad-T450:~$ sudo gedit ~/.bashrc
export CUDA_HOME=/usr/local/cuda-9.0
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
5.设置环境变量和动态链接库,在命令行输入:
cyg@cyg-ThinkPad-T450:~$ sudo gedit /etc/profile
export PATH=/usr/local/cuda/bin:$PATH
cyg@cyg-ThinkPad-T450:~$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
6.修改后保存配置:(会导致 /usr/local/cuda/lib64/libcudnn.so.7 不是符号链接?)
cyg@cyg-ThinkPad-T450:~$ sudo ldconfig
cyg@cyg-ThinkPad-T450:~$ ln -sf /usr/local/cuda-9.0/lib64/libcudnn.so.7.0.5 /usr/local/cuda-9.0/lib64/libcudnn.so.7
cyg@cyg-ThinkPad-T450:~$ sudo ldconfig
7.安装cudnn
解压cudnn-9.0-linux-x64-v7.tgz
把相应文件复制到/usr/local/cuda/ CUDA安装文件夹里,
cyg@cyg-ThinkPad-T450:~$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
cyg@cyg-ThinkPad-T450:~$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
cyg@cyg-ThinkPad-T450:~$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
至此,就可以安装Anaconda、pycharm、tensorflow等等工具了
下载Anaconda3-5.2.0 Linux版,cd到文件路径
cyg@cyg-ThinkPad-T450:~$ bash Anaconda3-5.2.0-Linux-x86_64.sh -b