Linux使用nvidia-smi时,出现错误NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver
目录
一、问题描述
Ubuntu的服务器上客户安装了Tesla P4的GPU,我们安装了GPU显卡驱动,但是服务器重启后,使用nvidia-smi查看GPU的当前状态时,无法正常显示相关信息,出现如下图所示的错误:

二、问题解析
2.1解决思路
造成问题描述的现象的原因有很多:
1、驱动程序未安装或者损坏了。
2、Linux的内核升级造成原有驱动不可用。
3、显卡驱动环境变量不能用。
结合实际情况我们可以排除第三点,前两种原因是最有可能的,因此我们重点考虑前两种情况。
2.2重装显卡驱动
使用如下命令,重装Tesla P4的驱动
./ NVIDIA-Linux-x86_64-535.161.08.run
重装驱动,但是出现图下所示的问题,且重装几次都因为该问题而终止。因此该问题并不是显卡驱动损坏或不存在引起的,还要继续找问题原因。

2.3 确认内核问题
使用如下命令查看ubuntu系统的内核版本
uname -r
发现内核版本如下:

记得以前给客户安装显卡驱动成功的时候,不是这个内核版本,当时ubuntu的内核版本应该是5.15,如下图所示:

由于客户环境不能随便改动,所以,我们在本地环境下载两个内核,并测试,发现使用5.15.0-43-generic时候显卡驱动正常,但使用6.5.0-35-generic就看不到显卡驱动。
因此,基本确认是这个原因造成的显示“NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. ”,下面应该尝试在客户环境验证。
三、解决问题
3.1总体解决思路
面对内核造成的问题有两个思路:
- 安装升级的显卡驱动。
- 降低内核版本以适配下载好的显卡驱动。
根据客户现场情况分析,我们只能选择第二种办法,具体执行步骤下面将详细介绍。
3.2 执行步骤
3.2.1 查看服务器本地可用的内核版本
使用如下命令查看本地可用的内部版本
dpkg --list | grep linux-image
结果如下图所示:

看到系统有三个内核可用,其中第一个就是前期成功安装显卡驱动的版本。
因此,我们只需要默认启用第一个内核版本就行了。
3.2.2 查找内核的启动项
通过如下命令找到对应内核的启动项:
grep gnulinux /boot/grub/grub.cfg
如下图所示:

其中标记的是要使用的内核的启动项,切记不要选择recovery mode !
3.2.3 重定向到内核的启动项
通过如下命令,修改BIOS的配置文件:
sudo gedit /etc/default/grub
然后出现如下图示,找到 GRUB_DEFAULT,即红框所示位置,修改成其内容为前面查找的内核启动项,下图为修改后的内容:

修改后保存;然后reboot,重启Ubuntu服务器。
四、问题解决
服务器开启后,进行各项测试验证,具体如下。
4.1 检查重启后内核版本
使用如下命令查看当前内核版本
uname -r
如下显示内核版本:

由图可以看出,内核版本已经变成5.15的了。
4.2 检查显卡驱动是否可用
再使用 nvidia-smi 命令查看GPU驱动的信息,如下图示:

显卡驱动正常,开启相关服务后能正常运行,问题圆满解决。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。
更多推荐

所有评论(0)