Ubuntu18.04安装 NVIDIA驱动+CUDA10.2+cuDNN+TensorRT

2023-05-16

系统:Ubuntu 18.04.5。显卡:RTX2080Super,独显无集成显卡。


0. 综述

目前,知道3种安装N卡驱动的方法:

  • 添加PPA源:最简便,但未必有最新驱动(据说可能有坑?)
sudo add-apt-repository ppa:xorg-edgers/ppa # 添加ppa源
sudo add-apt-repository ppa:graphics-drivers/ppa # 添加ppa源
sudo apt-get update # 更新apt-get源列表

然后进入:系统设置->软件和更新->附加驱动,选择更新的显卡驱动。

  • 安装CUDA时,顺便安装驱动:

1、用run安装CUDA时,选择安装Driver即可,但Driver版本可能稍旧。
2、用deb安装CUDA时,会自动联网安装最新Driver,但可能Driver与该CUDA的版本不匹配。

  • 去官网下载最新驱动,在本地安装:

PS:Driver安装完后,用nvidia-smi查看该Driver对应的CUDA版本,一定要安装相应的CUDA。

1. 先卸载原有驱动

如果之前安装了CUDA,应先卸载CUDA,再卸载Driver:

  • 方法1:用于卸载曾用run安装的。如果新驱动仍用run安装,可无需卸载直接安装,run会在安装时自动卸载之前的。
  • 方法2:用于卸载曾用deb或apt-get安装的。
# For installed by run-file:
sudo /usr/local/cuda/bin/cuda-uninstaller # 若未装cuda,此步可略
sudo ./NVIDIA-Linux-x86_64-384.59.run --uninstall

# For installed by deb-file or apt-get:
sudo apt-get purge cuda* # 若未装cuda,此步可略
sudo apt-get purge nvidia-* # 可能会破坏ROS中的
sudo apt-get purge libnvidia-*

PS1:卸载时要用apt-get purgedpkg --purgedpkg -P,而非apt-get removedpkg --removedpkg -r,否则配置文件仍在,重装时会有坑。
PS2:期间,随时用apt list|grep cudadpkg -l|grep cudaapt list|grep nvidiadpkg -l|grep nvidia检查是否有残留。如果提示定位不到软件包时,可先重启。卸载cuDNN或TensorRT时,也类似:
dpkg -l | grep tensorrt | awk '{print $2}' | sudo xargs dpkg -P
dpkg -l | grep TensorRT | awk '{print $2}' | sudo xargs dpkg -P
dpkg -l | grep cudnn | awk '{print $2}' | sudo xargs dpkg -P
dpkg -l | grep cuda | awk '{print $2}' | sudo xargs dpkg -P
dpkg -l | grep nvidia | awk '{print $2}' | sudo xargs dpkg -P

2. 禁用nouveau驱动

sudo gedit /etc/modprobe.d/blacklist.conf

在文本最后添加:(禁用nouveau第三方驱动,之后也不需要改回来)

blacklist nouveau
options nouveau modeset=0

保存后,执行:

sudo update-initramfs -u

这时一定要重启电脑或Ubuntu系统!!!然后执行:

lsmod | grep nouveau

如果屏幕没有输出任何内容,说明禁用nouveau成功。

3. 禁用X-Window服务(18.04可忽略)

sudo service lightdm stop #这会关闭图形界面,但不用紧张

Ctrl-Alt+F1进入命令行界面,输入用户名和密码登录即可。

PS:在命令行输入:sudo service lightdm start ,然后按Ctrl-Alt+F7即可恢复到图形界面。

4.1 用run安装Driver

# 给run文件赋予执行权限:
sudo chmod +x *.run
# 后面的参数非常重要,不可省略:
sudo ./NVIDIA-Linux-x86_64-440.82.run --no-opengl-files
  • --no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为"login loop"或者"stuck in login"。
  • --no-x-check:表示安装驱动时不检查X服务,非必需。
  • --no-nouveau-check:表示安装驱动时不检查nouveau,非必需。
  • -Z, --disable-nouveau:禁用nouveau。此参数非必需,因为之前已经手动禁用了nouveau。
  • -A:查看更多高级选项。

1、必选参数解释:因为NVIDIA的驱动默认会安装OpenGL,而Ubuntu的内核本身也有OpenGL、且与GUI显示息息相关,一旦NVIDIA的驱动覆写了OpenGL,在GUI需要动态链接OpenGL库的时候就引起问题。
2、如果提示未安装cc或make,可先退出安装,再命令行执行 sudo apt install gcc g++ make vim。如果又提示,编译器的gcc的版本高于kernel的gcc版本,可先联网运行Ubuntu的"Software Updater"更新下系统即可。
3、如果提示是否安装“nvidia-xconfig utility”,选择yes即可。

之后,按照提示安装,成功后重启即可。
如果提示安装失败,不要着急重启;可重复上述步骤,多试几次。

4.2 测试Driver:

nvidia-smi # 若列出GPU的信息列表,表示驱动安装成功
nvidia-settings # 若弹出设置对话框,表示驱动安装成功;若失败,可重启后再试。

5. 调整屏幕分别率(请忽略)

如果屏幕不能达到最佳分辨率时,可参见:http://blog.csdn.net/nostandby/article/details/69383543

# 查看显示器标识符:我的是DVI-I-0,在'connected'之前。
xrandr
# 查看分辨率的属性:我要看1920x1080的分辨率,在'Modeline'之后。
cvt 1920 1080
# 创建新分辨率模式:拷贝'Modeline'之后的信息即可。
sudo xrandr --newmode "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
# 为显示器添加分辨率模式:
sudo xrandr --addmode DVI-I-0 "1920x1080"
# 将分辨率模式应用到显示器:
sudo xrandr --output DVI-I-0 --mode "1920x1080"

PS:最终发现,劣质的显卡-显示器转接头,导致了显示器和分别率无法识别。换了转接头,无需上述步骤,分辨率自然恢复。

6.1 用run安装CUDA

# 给run文件赋予执行权限:
sudo chmod +x *.run
# 后面的参数非常重要,不可省略:
sudo ./cuda_10.2.89_440.33.01_linux.run --no-opengl-libs
  • --no-opengl-libs:必需参数,表示只安装驱动文件,不安装OpenGL文件,原因同上(但不是--no-opengl-files哈)。
  • --uninstall (deprecated):用于卸载CUDA Driver(已废弃)。
  • --toolkit:表示只安装CUDA Toolkit,不安装Driver和Samples。
  • --help:查看更多高级选项。

然后,按照提示安装即可。例如:

accept #同意安装
n #不安装Driver,因为已安装最新驱动
y #安装CUDA Toolkit
<Enter> #安装到默认目录
y #创建安装目录的软链接
n #不复制Samples,因为在安装目录下有/samples

6.2 用deb安装CUDA

  1. 若要安装TensorRT,请安装deb版本的CUDA
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
  1. 下载并安装CUDA10.2补丁:
wget -c https://developer.download.nvidia.com/compute/cuda/10.2/Prod/patches/1/cuda-repo-ubuntu1804-10-2-local_10.2.1-1_amd64.deb
wget -c https://developer.download.nvidia.com/compute/cuda/10.2/Prod/patches/2/cuda-repo-ubuntu1804-10-2-local_10.2.2-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local_10.2.1-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-10-2-local_10.2.2-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade

若输入nvidia-smi后出现:Failed to initialize NVML: Driver/library version mismatch,是因为cuda所用的显卡驱动覆盖了之前、导致驱动版本不匹配,重启系统即可。

6.3 测试CUDA:

  1. 设置CUDA的bin和lib路径:gedit ~/.bashrc,并追加:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

保存后,重新载入配置:source ~/.bashrc. ~/.bashrc

  1. 查看CUDA版本:nvcc -V

  2. 测试CUDA的Sample:

#编译并测试设备 deviceQuery:
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

#编译并测试带宽 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest

如果这两个测试的最后结果都是Result = PASS,说明CUDA安装成功啦。

7. 安装cuDNN

  • 用tar安装cuDNN:解压后,将其include与lib64下的内容分别移至cuda目录下include与lib64中即可。
sudo tar -xzvf cudnn-10.2-linux-x64-v8.0.3.33.tgz
cd cuda
sudo mv include/* /usr/local/cuda/include
sudo mv lib64/* /usr/local/cuda/lib64
  • 用deb安装cuDNN:
sudo dpkg -i libcudnn8* # 或依次安装下面三个包:
sudo dpkg -i libcudnn8_8.2.2.26-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn8-dev_8.2.2.26-1+cuda10.2_amd64.deb
sudo dpkg -i libcudnn8-samples_8.2.2.26-1+cuda10.2_amd64.deb
  • 测试cuDNN:
cp -r /usr/src/cudnn_samples_v8/ ~
cd  ~/cudnn_samples_v8/mnistCUDNN
sudo make
sudo ./mnistCUDNN

如果成功运行,会显示下列信息:Test passed!

8. 安装TensorRT

  • 用deb安装TRT:
sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.2-trt8.0.3.4-ga-20210831_1-1_amd64.deb
sudo apt-key add /var/nv-tensorrt-repo-ubuntu1804-cuda10.2-trt8.0.3.4-ga-20210831/7fa2af80.pub
sudo apt-get update
sudo apt-get install tensorrt onnx-graphsurgeon python3-libnvinfer-dev

PS:该方式只能为系统的python安装API(因是用apt-get安装);可用tar为conda安装API。

  • 用tar安装TRT:解压tar文件,导出lib路径,用pip安装需要的whl即可。
tar xzvf TensorRT-${version}.${os}.${arch}-gnu.${cuda}.${cudnn}.tar.gz
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:TensorRT-${version}/lib

cd TensorRT-${version}/python
sudo pip3 install tensorrt-*-cp3x-none-linux_x86_64.whl

cd ../graphsurgeon
sudo pip3 install graphsurgeon-*-py2.py3-none-any.whl

cd ../onnx_graphsurgeon
sudo pip3 install onnx_graphsurgeon-*-py2.py3-none-any.whl

PS1:该方式可为多个python安装API,指定相应的pip路径、安装相应版本的whl即可。
PS2:如果只用tar安装TRT,建议将lib路径写入~/.bashrc中。例如:
echo export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:TensorRT-${version}/lib >> ~/.bashrc

  • 测试TRT:
python3 # OR: ipython3
> import tensorrt as trt
> trt.__version__
  • 测试TensorRTx:比如yolov5

1、如果遇到:tensorrtx/yolov5/calibrator.cpp:4:10: fatal error: opencv2/dnn/dnn.hpp,手动编译opencv4。
2、如果遇到:terminate called after throwing an instance of 'pwgen::PwgenException' what(): Driver error,更新TensorRT的版本(比如 8.0GA update1)。
3、安装pycuda:pip3 install pycuda # 不要加sudo,因为root用户可能未配置cuda环境变量


参考文献:
https://zhuanlan.zhihu.com/p/126997172
https://blog.csdn.net/xinjieyuan/article/details/100667803
https://github.com/wang-xinyu/tensorrtx/tree/master/yolov5
https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html
https://blog.csdn.net/weixin_41868104/article/details/114937498

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04安装 NVIDIA驱动+CUDA10.2+cuDNN+TensorRT 的相关文章

随机推荐

  • java每日小算法(12)

    程序12 题目 xff1a 企业发放的奖金根据利润提成 利润 I 低于或等于10万元时 xff0c 奖金可提10 xff1b 利润高于10万元 xff0c 低于20万元时 xff0c 低于10万元的部分按10 提成 xff0c 高于10万元
  • strong_alias && weak_alias && __attribute__

    为了查看linux下malloc的实现函数 xff0c 下载了Glibc的源码文件 xff0c 可是找不到实现的函数在哪里 看文件名 应该是在malloc malloc c里面 发现 libc malloc的实现比较像 怎么从malloc到
  • glog

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 安装配置 1 简介 google 出的一个C 43 43 轻量级日志库 xff0c 支持以下功能 xff1a 参数设置 xff0c 以命令行参数的方式设置标志参数来控制
  • mysql 引擎 校对_mysql字符集与校对集详解

    1 字符集 character 设置数据存储编码格式 1 utf8 2 utf8mb4 支持Emoji 表情 Emoji 是一种特殊的 Unicode 编码 xff0c 常见于 ios 和 android 手机上 2 校对集 collate
  • BSS段和数据段

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 内存分段 xff08 英语 xff1a Memory segmentation xff09 xff0c 一种电脑内存的管理技术 xff0c 它将电脑的主内存分成许多区段 x
  • Zabbix各种报错信息和遇到的问题(持续更新)

    1 Zabbix报警 icmp pinger processes more than 75 busy root 64 localhost zabbix vi etc zabbix zabbix server conf 将这个值设置成Star
  • 自动化运维之 Kerberos 账号信息管理平台

    公司的自动化项目之一 公司的服务器超多 xff0c 需要一个用来管理服务器权限的系统 主要是实现 用一个账号 xff0c 可以让你登录所有的服务器 xff0c 也可以让你身无无分文 就是这样的一个操作的平台 5 25 数据库的展现已经做完
  • 分享一个 ftp下载、解压、更新依赖库文件的 python 脚本

    2019独角兽企业重金招聘Python工程师标准 gt gt gt code usr bin env python coding utf8 ftp下载 解压 更新依赖库文件 import os sys stat shutil string
  • 洛谷-U132410-最小代价(最小生成树(森林)+ 虚拟点)

    题目描述 xff1a 点击进入 思路 最小生成树的变形 我们虚拟一个 零 结点 xff0c 这个结点跟每个村庄 i 连边 xff0c 权值分别为在村庄 i 建立一个网络中心的花费 然后其他边都正常连 xff0c 最后求最小生成树即可 代码
  • 晶晶图js小女孩行走动画

    1 lt DOCTYPE html gt 2 lt html lang 61 34 en 34 gt 3 lt head gt 4 lt meta charset 61 34 UTF 8 34 gt 5 lt title gt Docume
  • Statistics Report for pid 21058 on 1wt.eu

    Statistics Report for HAProxy on 1wt eu Statistics Report for pid 21058 on 1wt eu gt General process information pid 61
  • sprintf

    sprintf sprintf 将字串格式化 在头文件 include lt stdio h gt 中 语法 string sprintf string format mixed args 传回值 字串 1 处理字符方向 负号时表时从后向前
  • Mac上Cargo编译错误: failed to run custom build command for '*.*'

    编译Rust的项目时候出现了错误 xff1a error failed to run custom build command for croaring sys v0 3 7 process didn 39 t exit successfu
  • Apache的Order Allow,Deny 详解

    Allow和Deny可以用于apache的conf文件或者 htaccess文件中 xff08 配合Directory Location Files等 xff09 xff0c 用来控制目录和文件的访问授权 所以 xff0c 最常用的是 xf
  • debian系统,启动Wireshark,出现Couldn't run /usr/bin/dumpcap in child process:权限不够

    这是由于当前用户没有权限运行 usr bin dumpcap造成的 usr bin dumpcap是Wireshark的包捕获引擎 先用ls命令看一下dumpcap的权限情况 xff1a xy 64 debian vm 1 ls lah u
  • git clone带用户名和密码的方式

    git clone http username password 64 127 0 0 1 res res git 转载于 https www cnblogs com cyw0918 p 6133992 html
  • 基本入门程序编写格式和注意事项

    在安装好JDK后联系程序的基本写法 1 先创建记事本 xff0c 如果有超级记事本如 notepad 43 43 ultraedit editplus等更好 重命名把记事本后面的后缀名改为 java 但是值得注意的是要看看自己创建的记事本文
  • 微信公众平台开发(一) 配置接口

    一 简介 微信公众平台是腾讯公司在微信的基础上新增的功能模块 xff0c 通过这一平台 xff0c 个人和企业都可以打造一个微信的公众号 xff0c 并实现和特定群体的文字 图片 语音的全方位沟通 互动 二 通讯机制 三 注册微信平台公众帐
  • noi题库 1.7 字符串 10到第15题

    10 简单密码 描述 Julius Caesar曾经使用过一种很简单的密码 对于明文中的每个字符 xff0c 将它用它字母表中后5位对应的字符来代替 xff0c 这样就得到了密文 比如字符A用F来代替 如下是密文和明文中字符的对应关系 密文
  • Ubuntu18.04安装 NVIDIA驱动+CUDA10.2+cuDNN+TensorRT

    系统 xff1a Ubuntu 18 04 5 显卡 xff1a RTX2080Super xff0c 独显无集成显卡 0 综述 目前 xff0c 知道3种安装N卡驱动的方法 xff1a 添加PPA源 xff1a 最简便 xff0c 但未必