CASE SOLVED:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driverr

如果,你是程序媛、程序员,请给他们一点点鼓励吧!

最近项目来了,LZ的小伙伴们一个个都被摧残的不行,每个人都讨论不同的任务,都觉得自己的任务是非常难的,家家有本难念的经,而且,程序有的时候放在自己电脑上跑的飞快,放到平台上就寸步难行,什么接口不匹配啊,tensorflow版本不一样啊,python版本不一样,这都是问题,所以感觉如果你当了程序员、程序媛都是在修行(≧▽≦)/啦啦啦

好了,言归正传,之前LZ的笔记本使用nvidia-smi就会打印如下信息:
在这里插入图片描述这个小伙伴应该都很熟悉了,但是LZ在调试程序的时候突然显示没有对应显卡,一脸懵逼,明明装好了,昨天还用的好好的,怎么今天就离我而去了(⊙o⊙)?
赶紧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.

重装?太浪费时间了,系统还有可能随时崩掉的危险,然后开始疯狂百度,众说风云,其中其实LZ遇到过一个,之前没有写,今天就一并写了。

在安装CUDA的时候,LZ是把bios里面的secure关掉进行安装的,所以在后期使用的时候,LZ都是把secure关掉,才可以运行nvidia-smi,不然会显示驱动找不到等问题,或者key不匹配之类的问题。

所以网上大多数的解决方案在LZ这边不可行,因为LZ之前已经可以使用了。

还有说使用sudo apt-get install 直接重新安装驱动的,LZ这边也就不考虑了,有兴趣小伙伴可以自行搜索

下面摆出LZ的解决方案,主要产生的原因是ubuntu内核更新了,具体的情况LZ并不很懂ubuntu这内核原理或者其他,然后要做的就是不用用新的内核,用原来驱动安装的。

首先查看一下内核信息

grep menuentry /boot/grub/grub.cfg

可以看到确实存在不同的内核版本信息
在这里插入图片描述
因为LZ就是突然不能使用的,推测应该上一个内核版本应该work的,所以就进行如下的操作,通过grub设置,进入高级选项,然后选择前一个版本的内核。

打开grub

sudo gedit /etc/default/grub 

对其进行修改

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

#GRUB_DEFAULT=0
GRUB_DEFAULT="1> 3"
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#GRUB_CMDLINE_LINUX="nomodeset"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

主要是修改了这部分

#GRUB_DEFAULT=0
GRUB_DEFAULT="1> 3"
#GRUB_HIDDEN_TIMEOUT=0

然后对grub进行更新

sudo update-grub

得到下列信息:
在这里插入图片描述
然后只要在grub界面中,选择上一个版本的内核进入就行了!还是不想重新安装驱动,就是不想重新安装驱动

好了,通过!

uname -r

可以看到内核恢复到:

4.15.0-55-generic

问题解决,每天都会遇到各种突发的问题,有点担心自己的发际线啊( ⊙ o ⊙ )啊!

更新:2019.9.15

LZ后来发现一个更好的方法,因为Linux更新都是为了修复之前内核的bug,提供一些新的特性,如果一直使用比较旧的内核,还是治标不治本,所以LZ有找到了一种方法,在使用新内核的同时,也不用重新安装驱动,具体方法如下:

Step one: 安装DKMS
DKMS全称是DynamicKernel ModuleSupport,它可以帮我们维护内核外的驱动程序,在内核版本变动之后可以自动重新生成新的模块。在使用dkms之前首先需要确保系统中已经安装了DKMS,在Ubuntu下可以执行下面这个命令安装。

sudo apt-get install dkms

通过

cd /usr/src

然后ls一下,查看你对应安装的驱动版本

在这里插入图片描述可以看到LZ这已经有三个版本的内核了,nvidia-smi的版本是430.34.

step2. 重新生成对应nvidia的驱动模块

sudo dkms install -m nvidia -v 430.34

后面进行检验

在这里插入图片描述
可以看到LZ用了最新的内核,也可以nvidia-smi. So, problem solved!

更新:2019.10.17

后面又遇到了一次,是在服务器上,用前两种方法都没解决,因为是新机器,所以直接重新装了系统。。。

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页