如何修复NVIDIA-SMI指令错误:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver

本文演示输出使用的机器是Ubuntu 22.04.2 LTS,它配备了一块专有的 NVIDIA GeForce GT 730 显卡

当服务器没有安装英伟达(NVIDIA)显卡驱动,或者驱动版本与显卡不匹配,或者安装了某些系统软件或者系统更新内核时,服务器重启后可能无法连接NVIDIA驱动,出现如下nvidia-smi错误信息:

$ 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.

如何修复错误nvidia-smi错误: “NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver”

安装必要的Linux内核头文件

如果之前正常,重启后出现这个错误,则很可能是Ubuntu内核版本升级导致的。让我们重新安装内核头文件。

$ sudo apt install linux-headers-`uname -r`

#or
$ sudo apt install linux-headers-$(uname -r) 

然后输入nvidia-smi指令,输出可能就正常了。如果还是错误,请继续尝试下面的方法。

使用DKMS为内核重新安装NVIDIA驱动程序

有时,重新启动机器后,NVIDIA SMI会显示NVIDIA driver loss,这是由于Linux内核升级导致之前的NVIDIA驱动与连接不匹配。

DKMS (Dynamic Kernel Module System,动态内核模块系统)可以在内核更改后自动编译模块并适应新内核。它允许更新离散的内核模块,而无需修改整个内核。使用 dkms 重新安装适合内核的驱动程序:

$ sudo apt install dkms
$ sudo dkms install -m nvidia -v 470.182.03

$ dkms status nvidia
nvidia/470.182.03, 5.15.0-88-generic, x86_64: installed

注意: 上面命令行中的470.182.03是NVIDIA的版本号。当你不知道的时候,进入/usr/src目录,你会看到nvidia文件夹及其后缀。或者,使用以下命令进行查询。

$ ls /usr/src | grep nvidia
nvidia-470.182.03

当您再次输入 nvidia-smi 时,熟悉的输出将会回来。

nvidia-smi output

如果还是不行,请坚持下去,尝试以下方法。让我们继续重新安装 NVIDIA 驱动程序。下面介绍三种专为 Linux 设计的广泛使用的安装方法。

安装英伟达(NVIDIA)显卡驱动程序的 3 种方法

1.在Linux上通过命令行安装Nvidia驱动程序

步骤 1:安装驱动程序之前,请确保更新软件包存储库。运行以下命令:

$ sudo apt update
$ sudo apt upgrade

步骤2:搜索Nvidia驱动程序,运行以下命令。输出显示适用于您的 GPU 的可用驱动程序列表。

$ apt search nvidia-driver

步骤 3:从可用 GPU 驱动程序列表中选择要安装的驱动程序。最适合的是最新测试的专有版本。

$ sudo apt install nvidia-driver-470

在本教程中,我们安装了 nvidia-driver-340,这是该 GPU 最新测试的专有驱动程序。

步骤 4:使用以下命令重新启动计算机:

# sudo reboot

2. 在 Ubuntu 上通过 PPA 存储库安装 Nvidia Beta 驱动程序

PPA 存储库允许开发人员分发官方 Ubuntu 存储库中未提供的软件。这意味着您可以安装最新的测试版驱动程序,但是存在系统不稳定的风险。

要通过 PPA 存储库安装最新的 Nvidia 驱动程序,请按照以下步骤操作:

步骤 1:使用以下命令将图形驱动程序存储库添加到系统中:

$ sudo add-apt-repository ppa:graphics-drivers/ppa

步骤 2:要验证您使用的 GPU 型号并查看可用驱动程序列表,请运行以下命令:

$ ubuntu-drivers devices
ubuntu-drivers devices

步骤 3:输出显示您的 GPU 型号以及该特定 GPU 的任何可用驱动程序。要安装特定驱动程序,请使用以下语法:

$ sudo apt install nvidia-driver-470

或者,通过运行以下命令自动安装推荐的驱动程序:

$ sudo ubuntu-drivers autoinstall

步骤 4:重新启动计算机以使更改生效。

3. 在 Linux 上通过 Runfile 安装程序安装 Nvidia 显卡驱动程序

步骤1:NVIDIA 驱动程序以 .run 安装程序包的形式提供,可与NVIDIA 驱动程序下载站点上的 Linux 发行版一起使用。选择适合您的 GPU 产品的 .run 包。

Nvidia download drivers

步骤 2:可以使用 wget 下载 .run,如下例所示:

$ wget https://us.download.nvidia.com/XFree86/Linux-x86_64/470.223.02/NVIDIA-Linux-x86_64-470.223.02.run

步骤 3:下载 .run 安装程序后,即可安装 NVIDIA 驱动程序:

$ sudo sh NVIDIA-Linux-x86_64-$DRIVER_VERSION.run

安装过程中按照屏幕上的提示进行操作。有关使用 .run 安装程序的更多高级选项,请参阅 --help 选项。

步骤 4:重新启动计算机以使更改生效。