Linux安装NVIDIA驱动,cuda,cudnn


注:本文部分内容整理自网络,原文地址:

  1. https://blog.csdn.net/lihe4151021/article/details/90083431
  2. https://hellozhaozheng.github.io/z_post/%E5%85%B6%E4%BB%96-Ubuntu%E7%B3%BB%E7%BB%9F%E4%B8%8B%E5%AE%89%E8%A3%85NVIDIA%E9%A9%B1%E5%8A%A8/
  3. https://www.cnblogs.com/matthewli/p/6715553.html
  4. https://www.machunjie.com/trouble/110.html

Linux安装NVIDIA驱动,cuda,cudnn

三者的区别:显卡(gpu)为硬件。显卡驱动就是用来驱动显卡的程序,没有显卡驱动,就不能调用显卡的计算资源。cuda是NVIDIA推出的适用于自家gpu的并行计算框架。cudnn是针对深度卷积神经网络的加速库。

一、安装nvidia驱动:

  • 将Nouveau驱动禁用:
    • 什么是Nouveau:
      Nouveau是一群独立的软件工程师为NVIDIA显卡所编写的自由开源的显卡驱动程序,其支持所有的NVIDIA微架构。虽然其性能并没有NVIDIA的官方显卡驱动效果好,但是能够使得用户在安装完Linux系统之后拥有不错的显示效果,所以在大多数的发行版Linux系统上作为默认的NVIDIA显卡驱动程序。
      但是要想使用cuda就必须安装NVIDIA官方驱动,而且其与Nouvean会冲突,所以必须首先禁用Nouvean。
    • 禁用Nouvean驱动程序:
      1)执行命令,打开blacklist.conf文件,可以使用vim编辑器或者gedit进行编辑
       sudo gedit /etc/modprobe.d/blacklist.conf
      2) 将Nouvean加入到blacklist文件中,保存并退出
       blacklist vga16fb  //Franebuffer
       blacklist nouveau
       blacklist rivafb
       blacklist nvidiafb
       blacklist rivatv
      
      3)关闭nouvean:
      echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
      4)更新重启
      update-initramfs-u
      reboot
      
      5)检查是否成功禁用
      lsmod | grep nouveau
      
      没有显示任何信息,就说明已成功禁用。
  • 安装nvidia驱动
    • 在官网下载相应的驱动
      地址:https://www.nvidia.cn/geforce/drivers/
    • 关闭图形界面并卸载原有驱动
      sudo service lightdm stop   //关闭图形界面
      
      sudo apt-get remove nvidia-*    //如果没有安装其他版本的驱动,则不执行
      
    • 给驱动run文件赋予执行权限:
      sudo chmod a+x ×××.run  //xxx代表你的确定名称。
      
    • 安装
      sudo ./NVIDIA-Linux-x86_64-396.18.run -no-x-check -no-nouveau-check -no-opengl-files 
      
      -no-x-check:安装驱动时关闭X服务
      -no-nouveau-check:安装驱动时禁用nouveau
      -no-opengl-files:只安装驱动文件,不安装OpenGL文件
    • 打开图形界面:
      sudo service lightdm start
      
      按ctrl+alt+f7返回图形界面
    • 检查驱动是否安装成功:
      	nvidia-smi
      
      安装成功会显示驱动信息

出现的问题

  • 错误一
the distribution-provided pre-install script failed!

这个问题源自nvidia驱动安装包自身的问题,这里我们可以直接点击yes或者continue继续安装

  • 错误二
ERROR: Unable to load the kernel module 'nvidia.ko'.  This happens most
frequently when this kernel module was built against the wrong or
improperly configured kernel sources, with a version of gcc that differs
from the one used to build the target kernel, or if a driver such as
rivafb/nvidiafb is present and prevents the NVIDIA kernel module from
obtaining ownership of the NVIDIA graphics device(s), or NVIDIA GPU
installed in this system is not supported by this NVIDIA Linux graphics
driver release.

遇到此问题, 要么是安装本身不匹配或者破损, 要么没有完全禁用nouveau, 根据上面的安装方式禁用即可.

  • 错误三
    在安装的最后一步,没有提示安装成功,而是显示
Error:Unable to load the 'nvidia-drm' kernel module .

出现这个问题最有可能的原因是你安装的Ubuntu是UEFI模式启动的,但是在BIOS中却打开了Security BOOT选项. 正确做法是 禁用该选项

  • 错误四
    检测到系统已经安装了其他版本的nvidia驱动
    驱动没卸载干净,可以使用sudo apt-get --purge remove nvidia-*命令,卸载所有的nvidia驱动,也可以点继续,这样在安装过程中会自动卸载旧驱动
  • 错误五
    安装过程中有可能会弹出X.org异常警告,以我的经验来说你可以无视该警告继续安装,这样并不会有什么问题
`pkg-config` utility and the X.Org SDK/development package for your distribution and reinstall the driver.
  • 错误六
    就是安装完以后仍不能nvidia-smi,解决办法是去boot里将secureboot 设置成disable,这步操作完nvidia-smi就有结果了
  • 错误七
    循环登录
    主要表现为在登录界面输入密码后依然跳转回登陆界面,无限循环,这是在使用.run文件安装时遇到的问题,这里有一个亲测有效的解决方案:
    当输入安装指令时,不要简单地输入 sudo ./NVIDIA-Linux-x86_64-384.111.run,而是输入:
sudo ./NVIDIA-Linux-x86_64-384.111.run -no-x-check -no-nouveau-check -no-opengl-files
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件

这样再reboot,就不会出现循环登录的问题。

  • 错误八:重启黑屏
    主要表现为reboot后开机无法进入图形界面,而是直接黑屏,但是还可以进入命令行界面。解决方案:
sudo cp ~/tmp/xorg.conf.nvidia-xconfig-original /etc/X11/xorg.conf
sudo vim /etc/X11/xorg.conf

确保xorg.conf.nvidia-xconfig-original(也可能在etc/X11路径中)与xorg.conf的内容为:

Section "ServerLayout"
   Identifier "layout"
   Screen 0 "nvidia"
   Inactive "intel"
EndSection

Section "Device"
   Identifier "intel"
   Driver "intel"
   BusID "PCI:0@0:2:0"
   Option "AccelMethod" "SNA"
EndSection

Section "Screen"
   Identifier "intel"
   Device "intel"
EndSection

Section "Device"
   Identifier "nvidia"
   Driver "nvidia"
   BusID "PCI:1@0:0:0"
   Option "ConstrainCursor" "off"
EndSection

Section "Screen"
   Identifier "nvidia"
   Device "nvidia"
   Option "AllowEmptyInitialConfiguration" "on"
   Option "IgnoreDisplayDevices" "CRT"
EndSection

然后reboot,就可以解决黑屏问题。

  • 错误九:驱动不工作
    主要表现为可以进入图形界面,但是驱动不工作,无论是nvidia-smi还是nvidia-prime都是无效的。

出现这个问题的可能原因是没有Disable掉Secure Boot(就是安装驱动时提示你Disable的东西),解决方法也很简单,在安装完驱动后,reboot时,在开机出现一个全蓝界面
时按任意键,选择第二项,也就是改变Secure Boot的状态,然后依据提示将它Disable掉,然后boot就好。
如果之后要Enable这个东西的话,输入指令:

sudo mokutil --enable-validation

然后reboot,在开机的时候就会再次出现那个全蓝的界面,依然选择第二项,根据提示Enable,然后boot即可。

安装cuda

可参考:https://blog.csdn.net/zhangpengzp/article/details/85008507

离线安装方法

  • 下载相应版本的cuda:
    https://developer.nvidia.com/cuda-downloads
  • 安装(根据runfile、deb选择相应的安装方式)

在线安装方法

使用apt安装:

sudo apt install cuda-10-0

安装cudnn

可参考:https://blog.csdn.net/public669/article/details/98470857
https://baijiahao.baidu.com/s?id=1628772919833850903&wfr=spider&for=pc

离线安装

  • 下载相应版本的cudnn:
    https://developer.nvidia.com/cudnn
  • 安装(根据runfile、deb选择相应的安装方式)

在线安装

使用apt或者conda安装

利用anaconda安装多版本cuda

可参考:https://blog.csdn.net/yl19870518/article/details/104212648#NVIDIAcuda_9

注意:anaconda虽然可以安装各种cudatoolkit,但是关于cuda最重要的内核驱动它并没有安装,无论安装哪个版本的cudatoolkit,都会调用系统的cuda内核,因此环境中安装的cuda版本不能超过系统中存在的内核版本,比如系统安装的内核是V9.0的cuda,在环境中安装的cuda版本最高也就是9.0了,如果想安装更高版本的cuda,只能先升级系统中cuda的版本。

出现的问题

  • nvidia-smi和nvcc -V命令看到的版本不一致

CUDA有两种API,运行时API和驱动API,即所谓的Runtime API与Driver API。nvidia-smi的结果除了有GPU驱动版本型号,还有CUDA Driver API的型号,而nvcc的结果对应CUDA Runtime API。

遇到两者不一致问题,可以查看 https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html 确定版本是否兼容。
如果不兼容,解决方案是更改Runtime API,具体方法是安装对应Driver API版本的cuda。

  • nvcc -V命令时显示command not found
    可能是没有正确安装驱动,或者安装好了但是没有添加到环境中。
    没有添加到环境中可参考:
    https://blog.csdn.net/Flying_sfeng/article/details/103343813?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

  • torch.cuda.is_available()结果为false
    参考:https://blog.csdn.net/daydaydreamer/article/details/102877064

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值