这里给出英伟达官方的cuda和驱动的对应:
转自【已解决】Ubuntu18.04下NVIDIA GPU驱动程序运行一段时间后出错“NVIDIA-SMI has failed”
本人在使用Ubuntu18.04 NVIDIA GPU深度学习环境的过程中,每过一段时间就出现错误“NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running”,这时参考网上的做法卸载GPU驱动再重装,但是过一段时间后又不正常,经过观察发现,每次出现这种问题都是在Ubuntu系统自动更新后,今天将解决过程详细记录下来,安装驱动过程中也有雷区,网上很多帖子都没有详细说,这里说明记录一下,供有类似问题的深度学习研究童鞋参考。
注意:我的电脑GPU为NVIDIA 940MX,安装了CUDA9.0和cuDNN支持,对于其他版本的GPU处理情况类似。这里针对的是之前已经安装过GPU驱动+CUDA+cuDNN的情况,对于首次安装GPU驱动,还需要将原始集成显卡加入黑名单等步骤,见我的另一篇帖子:《Ubuntu18.04下搭建深度学习环境(tensorflow CPU GPU、Keras、Pytorch、Pycharm、Jupyter)》
解决方法:
1、禁用Ubuntu自动更新功能
在Ubuntu设置中直接用图形界面就可以解决,在software&update中,相信贴两张截屏大家就应该明白
2、卸载所有NVIDIA驱动:
sudo apt-get remove --purge nvidia*
3、确保gcc、g++是4.8以上版本,安装nvidia驱动时候需要,Ubuntu18.04自带版本为gcc-7.3:
注意:安装NVIDIA GPU驱动需要gcc和g++的版本为7.0以上,Ubuntu18.04系统自带的gcc和g++就是7.3版本的,已经满足要求,但是由于之前安装好驱动后,继续安装的cuda9.0只支持4.8以下版本,所以之前在安装好GPU驱动后将gcc,g++降级到了4.8,这里要先确认版本,然后修改软连接。这里请去NVIDIA官网查看驱动需要的gcc和g++版本,否则即使使用下一步的命令安装好驱动后,使用nvdia-smi命令错误显示依旧。
-
$cd /usr/bin
-
$ls -l gcc*
#查看gcc链接
-
$sudo mv gcc gcc.bak
#备份
-
$sudo ln -s gcc-7 gcc
#重新链接
-
$gcc –v
#显示版本为gcc-7.3
-
#对g++进行同样的操作
-
$ls -l g++*
#查看gcc链接
-
$sudo mv g++ g++.bak
#备份
-
$sudo ln -s g++-7 g++
#重新链接
-
$g++ –v
#显示版本为g++-7.3
4、安装GPU驱动
$sudo ubuntu-drivers autoinstall
5、重启系统,使用nvidia-smi查看,看到显卡信息说明安装成功:
-
$sudo reboot
-
#重启系统后查看显卡信息
-
$nvidia-smi
通过系统设置菜单也可以看到显卡信息:
6、安装完毕后将gcc、g++降级到4.8版本,CUDA要求的gcc、g++版本低于4.8,否则进行深度学习运算时候会出错。
-
$cd /usr/bin
-
$ls -l gcc*
#查看gcc链接
-
$sudo mv gcc gcc.bak
#备份
-
$sudo ln -s gcc-4.8 gcc
#重新链接
-
$gcc –v
#显示版本为gcc-4.8
-
#对g++进行同样的操作
-
$ls -l g++*
#查看gcc链接
-
$sudo mv g++ g++.bak
#备份
-
$sudo ln -s g++-4.8 g++
#重新链接
-
$g++ –v
#显示版本为g++-4.8