Ubuntu 16.04 安装 CUDA10.2 + Nvidia驱动 + cuDNN 7.6.5.32
此经验帖参考了CUDA官网教程、cuDNN官网安装教程及师兄经验帖,经测试适用于惠普暗影精灵笔记本(Nvidia GTX 1660 Ti 显卡)& 台式机(CPU集显+Nvidia RTX 2080 Ti 显卡).
0、卸载原有的 CUDA、Nvidia 驱动:
1、CUDA 10.2 安装(包含Nvidia显卡驱动)
不必单独安装Nvidia驱动,直接装CUDA即可自动安装对应版本的Nvidia驱动.
(1)注意先看自己显卡型号是不是支持CUDA
查看显卡型号的命令:
lspci | grep -i nvidia
(2)如果显卡支持,就可以去官网下载CUDA,选Ubuntu16.04对应的runfile(local)文件:
CUDA 10.2官网下载地址 默认下载到Home目录下
(3)找到自己下载的CUDA的run文件名字,如cuda_10.2.89_440.33.01_linux.run,记下来一会要用
(4)命令行模式下安装CUDA
先 Ctrl+Alt+F1 进入命令行模式:
sudo service lightdm stop
cd进入CUDA的run文件所在文件夹
下一步要注意!!!(更新于2021.1)
如果电脑只有独显,可使用以下命令安装CUDA+Nvidia驱动,一路选择默认参数即可
sudo sh ./cuda_10.2.89_440.33.01_linux.run
如果电脑有集显+独显(也就是没有装Nvidia驱动的情况下直接可驱动显示器),必须使用以下命令安装,也就是不装OpenGL:
sudo sh ./cuda_10.2.89_440.33.01_linux.run --no-opengl-libs
如果不加 - -no-opengl-libs,询问是否安装OpenGL时又选了yes的话,待会开机就会循环登录进不去桌面!血泪教训!
耐心等它装完就可以愉快的进入图形界面了
sudo service lightdm start
(5)重新进入图形界面后,配置环境文件
sudo gedit ~/.bashrc
在末尾加上以下内容:
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
保存退出
source ~/.bashrc
检查安装情况:
nvidia-smi 检查GPU,nvcc -V 检查CUDA
如果出现 「循环登录问题」:这篇博客
更新:
尝试用 runfile 方式在 Ubuntu 18.04下装CUDA 10.2,安装失败,改用deb方式安装成功。
方法:去官网下载 deb(local) 文件并参照官网说明安装即可
如果要单独安装 Nvidia 显卡驱动:
去官网找想要的历史版本下载安装
2、cuDNN 7.6.5.32安装
cuDNN是深度学习一般要用到的,取需
(1)官网下载
cuDNN 7.6.5.32官网下载地址
注册后下载这三个东西,其实就是对应于ubuntu16.04的deb文件都下载下来:
cuDNN Runtime Library for Ubuntu16.04 (Deb)
cuDNN Developer Library for Ubuntu16.04 (Deb)
cuDNN Code Samples and User Guide for Ubuntu16.04 (Deb)
(2)之后完全按照官网教程安装和测试,即:
安装:
sudo dpkg -i libcudnn7_x.x.x-1+cudax.x_amd64.deb
sudo dpkg -i libcudnn7-dev_7.x.x.x-1+cudax.x_amd64.deb
sudo dpkg -i libcudnn7-samples_7.x.x.x-1+cudax.x_amd64.deb
测试:
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
如果 cuDNN 安装正常,则显示:
Test passed!
3、跑mnist测试时可能会遇到问题
给两台电脑装了cuDNN,其中一台跑mnist测试时报错:
bash: ./mnistCUDNN: No such file or director
我的解决办法是把官网安装教程里从 2.3.2. Installing From A Debian File 到 2.4. Verifying The cuDNN Install On Linux 的所有过程重新来一遍,就解决了。