我在训练代码的时候发现没有用上gpu,就想nvidia-smi查看一下运行状态,结果就出现了这个报错,本人只是记录自己遇到的问题,想知道结果的可以直接看最下面
大概意思就是NVIDIA-SMI 无法与 NVIDIA 驱动程序通信。通常情况下,这是由于 NVIDIA 驱动程序未正确安装或未加载而导致的
这个时候需要查看一下版本是否匹配,因为NVIDIA 驱动程序具有很强的版本依赖性,需要与特定的内核版本和 CUDA 版本匹配。
如果想查看是否安装完成NVIDIA 驱动程序,可以去终端输入
dpkg -l | grep nvidia
这个时候就会打印出来你的安装状态,比如我的就是这样,显示我已经安装了libnvidia-compute-535:amd64
和nvidia-utils-535
版本的NVIDIA驱动程序。(解释一下:libnvidia-compute-535:amd64
和nvidia-utils-535
是NVIDIA驱动程序的两个不同组件。它们提供了不同的功能和支持。libnvidia-compute
是用于计算任务的NVIDIA库文件,它提供了对NVIDIA GPU的计算能力的访问和支持。nvidia-utils
是一组NVIDIA驱动程序的实用工具和二进制文件,它们提供了与NVIDIA GPU相关的功能和配置选项。这两个组件一起构成了完整的NVIDIA驱动程序,以提供对NVIDIA显卡的计算和图形功能的支持。它们通常需要与特定版本的内核和操作系统配合使用,以确保兼容性和正常运行。)
rc libnvidia-compute-525:amd64 525.147.05-0ubuntu0.20.04.1 amd64 NVIDIA libcompute package
ii libnvidia-compute-535:amd64 535.146.02-0ubuntu0.20.04.1 amd64 NVIDIA libcompute package
rc nvidia-compute-utils-525 525.147.05-0ubuntu0.20.04.1 amd64 NVIDIA compute utilities
rc nvidia-dkms-525 525.147.05-0ubuntu0.20.04.1 amd64 NVIDIA DKMS package
rc nvidia-kernel-common-525 525.147.05-0ubuntu0.20.04.1 amd64 Shared files used with the kernel module
rc nvidia-prime 0.8.16~0.20.04.2 all Tools to enable NVIDIA's Prime
rc nvidia-settings 470.57.01-0ubuntu0.20.04.3 amd64 Tool for configuring the NVIDIA graphics driver
ii nvidia-utils-535 535.146.02-0ubuntu0.20.04.1 amd64 NVIDIA driver support binaries
接着我们在终端运行在终端中运行
sudo service nvidia-driver status
检查驱动程序是否正在运行
然后我就出现了这个
Unit nvidia-driver.service could not be found.
这个时候说明我的系统上可能没有安装NVIDIA驱动程序对应的系统服务。
这个时候我又输入了以下指令来检查驱动程序是不是被正确加载了。结果没有返回值
lsmod | grep nvidia
如果返回的结果中没有类似 nvidia
的字符串,说明 NVIDIA 驱动程序没有正确加载。你可以尝试手动加载驱动程序,命令如下:
sudo modprobe nvidia
然后我就显示无法识别显卡设备
modprobe: ERROR: could not insert 'nvidia': No such device
于是我越想越不对劲。OK,那我们从头在来,换个思路。我们首先知道这个问题可能是因为我们的内核版本与我们的驱动程序连接不成功,那么我们查看一下连不上的驱动版本是什么
ls -l /usr/src/
我们可以看到在最后一行出现了一个驱动版本
那么我们重新安装一下
sudo dkms install -m nvidia -v 535.146.02
安装完之后就可以了,如果你安装完之后发现输入nvidia-smi 命令还是无法与 NVIDIA 驱动程序通信,请不要着急。安装完之后需要对电脑进行重启以确保 NVIDIA 驱动程序正确加载,或者尝试运行
sudo modprobe nvidia
命令来加载驱动程序。
为了方便,我把重启的代码也放在下面了,需要自取
reboot