Nvidia GPU驱动与CUDA、Ubuntu内核兼容性问题的解决日志

问题描述

最近,各个操作系统针对Intel CPU的Meltdown(熔断)和Spectre(幽灵)这两个芯片级的设计漏洞推出了安全补丁。在更新了新的Kernel之后,我们的AI服务器运行的Ubuntu 16.04系统的Linux Kernel升级到了4.13.0-31-generic。重启之后,发现GPU无法正常使用,出现无法登录系统、分辨率改变等问题,与Ubuntu 16.04安装NVIDIA驱动后循环登录问题中描述的症状一致。初步判断原因是显卡驱动(nvidia driver 387.26)和新的linux kernel(4.13.0-31-generic)不兼容导致的。去Nvidia的devtalk逛了一圈,确实很多人报告了这个问题。

  • 操作系统:ubuntu 16.04
  • 系统内核: Linux version 4.13.0-31-generic
  • GPU: GTX 1080
  • CUDA:cuda-9.1, cudnn-7.0.1,deb (local)安装方式
  • nvidia driver: nvidia driver 387.26

Nvidia已经更新了驱动,只需要安装新的驱动就可以解决linux kernel和nvidia driver不兼容的问题。不过,devtalk安装的新驱动版本为nvidia driver 390,在尝试了单独下载该驱动的run文件安装方式和deb (network)安装方式之后,发现前一种安装方式因为著名的nouveau问题而安装失败,后一种依旧安装387.26版本的驱动,最终放弃了这两种安装方式,采用了第三种PPA的途径。

解决方法

首先,在PPA GPU查看驱动的版本(Current official release: nvidia-387 (387.34)...)

  1. 卸载现有GPU驱动
$ sudo apt-get remove --purge nvidia-*
$ sudo apt-get autoremove
  1. PPA安装新的GPU驱动
# 如果没有add-apt-repository命令,安装 software-properties-common即可
$ sudo add-apt-repository ppa:graphics-drivers
$ sudo apt-get update
# 安装新的驱动nvidia-387.34
$ sudo apt-get install nvidia-387
  1. 重启
  2. deb (network)的方式安装CUDA 9.1。如果用deb local的安装方式,还是会安装旧的驱动版本。安装好之后,不要忘记设置环境变量。

你可能感兴趣的:(Nvidia GPU驱动与CUDA、Ubuntu内核兼容性问题的解决日志)