老,是物理功能的退化。衰,是精神的颓废。
机器永远不会累,但是它可以停下来。而人即使再累,也必须永远走下去。

本文介绍如何安装 NVDIA GPU 驱动以及 CUDA 工具包。

提示:本人测试的操作系统是 Ubuntu 18.04.3 LTS

一、安装 ubuntu-drivers 工具组件

sudo apt-get install ubuntu-drivers-common

二、安装 GPU 驱动

首先我们可以看下目前我们可以看下机器上的显卡型号和驱动版本:

ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001392sv00001558sd00003501bc03sc02i00
vendor   : NVIDIA Corporation
model    : GM107M [GeForce GTX 860M]
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-340 - distro non-free
driver   : nvidia-driver-435 - distro non-free recommended
driver   : nvidia-driver-430 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

== /sys/devices/pci0000:00/0000:00:1c.2/0000:03:00.0 ==
modalias : pci:v00008086d000008B3sv00008086sd00000070bc02sc80i00
vendor   : Intel Corporation
model    : Wireless 3160 (Dual Band Wireless-AC 3160)
manual_install: True
driver   : backport-iwlwifi-dkms - distro free

可以看到我们当前笔记本的显卡型号是 GeForce GTX 860M,可选驱动有 nvidia-driver-390, nvidia-driver-430 等。 系统推荐我们安装 nvidia-driver-435。如果你同意系统推荐,你可以通过下面的命令安装系统所推荐的驱动程序。

sudo ubuntu-drivers autoinstall

当然,如果你自己明确知道哪个驱动程序是适合你当前的显卡的,那么你可以直接安装指定的那款驱动。

sudo apt install nvidia-driver-435

三、安装 CUDA 工具包

这个建议直接按照官方的文档安装就好了。根据自己的操作系统版本,选择对应的安装指引。

https://developer.nvidia.com/cuda-downloads

我选择的是 Linux -> x86-64 -> Ubuntu -> 18.04 -> deb(local)

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

装完之后重启就 OK 了。重启之后我们可以通过 nvidia-smi 命令查看 GPU 的工作状态。

nvidia-smi 
Sat Feb  1 13:37:16 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 860M    On   | 00000000:01:00.0 Off |                  N/A |
| N/A   46C    P5    N/A /  N/A |    399MiB /  2004MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      2036      G   /usr/lib/xorg/Xorg                           201MiB |
|    0      3992      G   /usr/bin/compiz                              120MiB |
|    0      4180      G   ...quest-channel-token=9014704928365584033    73MiB |
+-----------------------------------------------------------------------------+

四、踩坑记录

如果你安装的高版本的驱动,比如 nvidia-driver-450 以上的,在安装 CUDA 的过程中,可能会出现依赖错误。类似:

The following packages have unmet dependencies:
nvidia-cuda-toolkit: Depends: nvidia-cuda-dev (= 11.0.85-3ubuntu) but it is not going to be installed.
...
you might want to run 'apt --fix-broken install' to correct these.
...

解决方案

首先,按照命令行的提示,运行:

sudo apt --fix-broken install 

如果,你可以成功安装,那么恭喜恭喜,成功解决。如果你也像我一样,出现类类似下面的错误:

dpkg error process archive /var/cache/apt/archives/nvidia-cuda-dev...

命令行提示我们重写文件的时候,发生了冲突。这意味着,我们要么强制重写这个文件,或者将这个冲突文件删除,重新安装依赖包。

在这里我选择重写文件:

sudo dpkg -i --force-overwrite [文件名]

这里的文件名就是上面错误中提示的那个 /var/cache/apt/archives/nvidia-cuda-dev_xxxx.deb

完成上一步之后,尝试再运行:

sudo apt --fix-broken install

这次应该就可以执行成功了。之后你就可以重新安装你的 cuda 程序了。

sudo apt-get -y install cuda