Ubuntu20.04 安装NVIDIA驱动及cuda10.0、cudnn
安装NVIDIA驱动
系统版本:Ubuntu20.04
问题出现
终端输入 nvidia-smi,出现以下报错:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
问题解决
如果有安装过旧的驱动,需要先删除旧的驱动:
sudo apt-get purge nvidia*
安装驱动可以有很多方式,这里选择最简单的图像界面安装:
打开设置->关于->软件与更新->附加驱动,选择相应的驱动版本->点击应用更改。
之后会有一个引导程序,需要输入密码,请记住这个密码!
完成安装后重启电脑,这时会出现一个蓝色界面(perform mok management),(一定记得要重启,我之前安装了很多次都忘记要重启,最后经过这个蓝色界面才安装成功),正确的做法如下:
- 选择第二个entroll mok
- 进入entroll mok界面,选择continue
- 进入enroll the key 界面,选择 yes
- 接下来输入你在安装驱动时输入的密码
- 之后会跳到蓝色背景的界面perform mok management 选择第一个 reboot
验证安装是否成功
此时可以打开terminal,输入 nvidia-smi,出现类似如下界面即安装成功。
安装CUDA Tookit
确定cuda版本
刚刚输入nvidia -smi输出的右上角有一个 CUDA Version显示的是机器所支持的最大Cuda版本号。
此外,CUDA版本选择要看其他上层库的需求,比如TensorFlow,caffe,OpenCV,还有编译环境的需求,比如VisualStudio等。
tensorflow版本要求:https://tensorflow.google.cn/install/source_windows
操作系统和VS编译器需求:(可以在安装指导中找到)
降低gcc版本
首先Ubuntu 20.04默认g++9版本太高,会导致CUDA无法安装,因此要先降低g++版本。
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
sudo update-alternatives --display gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
sudo update-alternatives --display g++
官网安装
https://developer.nvidia.con/cuda-toolkit-archive
这里展示10.0的安装 https://developer.nvidia.cn/cuda-10.0-download-archive
点击Download下载后,打开终端,按如下步骤进行:
sudo bash cuda_10.0.130_410.48_linux.run(注意替换为自己的文件名)
压住回车键,直到服务条款显示到100%。接着按下面的步骤选择:
accept
n(不要安装driver)
y
y
y
配置环境变量
- 打开终端,输入 sudo gedit ~/.bashrc
- 文件末尾输入以下内容,保存
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
export PATH=$PATH:/usr/local/cuda-10.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
- 终端运行 source ~/.bashrc
- 检查:nvcc --version
安装cudnn
下载安装包
按需求下载cudnn的安装文件:https://developer.nvidia.com/rdp/cudnn-archive
安装
解压下载的文件,可以看到cuda文件夹,在当前目录打开终端,执行如下命令:
sudo cp cuda/include/cudnn* /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
查看cudnn版本
在终端输入:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2