IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ubuntu更新显卡驱动与升级cuda版本“采坑“小记 -> 正文阅读

[系统运维]Ubuntu更新显卡驱动与升级cuda版本“采坑“小记

1. 写在前面

这次记录下今天安装百度的自动驾驶框架Apollo的时候,在硬件环境上采的一些坑,花费了5个多小时的时间,才把Apollo框架装上且能正常使用GPU,通过今天的摸索,让我对Cuda升级和显卡驱动等有了一定的了解。

关于Apollo框架的安装过程,可以直接见官网

我直接按照这个步骤来的,一开始是直接按照官网上说的步骤来的,不过之前由于实验室服务器上都装好了cuda等,所以这步跳了过去。从docker这里开始。 把前面的基础工作弄完之后,然后开始安装Apollo,这个也没费多大劲,装完。

然后apollo项目主目录,通过命令./apollo.sh拉镜像建容器然后启动,本以为大功告成,结果到最后告诉我Failed to start docker container "apollo_runtime_standalone_wu,也就是容器启动失败,由于我这是第一次接触这个东西,对于docker更是只知道皮毛,所以到这里就懵逼了下,百度也没出个结果,那就自己摸索了。

既然./apollo.sh命令直接这样报错,也不说原因,那我就想单独启动下这个容器试试。

# 先看看当前有哪些容器
docker ps -a

# 启动上面失败的容器
docker start apollo_runtime_standalone_wu

结果依然是启动失败,但这次报了原因 nvidia-container-cli: requirement error: unsatisfied condition: cuda>=11.1, please update your driver

这里就说cuda版本太低了,匹配不上当前容器需要的cuda版本,于是我nvidia-smi了下,发现当前的cuda=10.4

于是乎我就差不多知道解决办法了。于是乎就想着,升级驱动呗。

2. 更新显卡驱动

升级驱动,我了解过之前,必须要把之前的驱动卸载掉,所以这里就使用了下面几行命令:

sudo /usr/bin/nvidia-uninstall
sudo apt-get --purge remove nvidia-\*  # 有的不需要加-\
sudo apt-get purge nvidia-\*   # 有的不需要加-\
sudo apt-get purge libnvidia-\*  # 有的不需要加-\

这样完事之后,输入

sudo dpkg --list | grep nvidia-*

正常的话,是没有出现任何内容,算是驱动卸载干净了,但是我这里还出现了一些内容,于是

sudo apt-get autoremove

这样才清理干净。

清理干净之后, 那就装驱动呗, 但是装什么版本呢? 升级到什么版本呢? 这个我就不知道了,因为之前对这块不了解, 也不知道究竟当前cuda适合啥驱动版本,没注意,于是开始就无脑根据apollo官网给的:

sudo apt-get update
sudo apt-add-repository multiverse
sudo apt-get update
sudo apt-get install nvidia-driver-455

安装了个455版本,装完之后,输入nvidia-smi,结果可想而知:Failed to initialize NVML: Driver/library version mismatch, 我就知道肯定不会这么顺利。

出现了个版本不匹配,大致上我能猜到,就是当前cuda与装的这个455版本对应不上吧。 于是乎,百度搜了下,根据这篇博文,了解到NVIDIA 内核驱动版本与系统驱动不一致,那就先看下当前内核驱动版本是多少:

cat /proc/driver/nvidia/version

-->
NVRM version: NVIDIA UNIX x86_64 Kernel Module  440.34  Wed Jun 26 12:19:48 CDT 2019
GCC version:  gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~18.04.12)

哦,系统内核是440,结果装了个455的,故出现了这个问题。

那怎么解决呢? 那你可能说,我再装个440的驱动不就行了? 果真,我还就这么尝试了,这里倒是行了, 那我折腾这么一圈的意义是啥呢? 本质上我不是为了解决Apollo框架里面不支持10.x版本吗? 这么倒腾了一圈这个问题并没有解决。

所以,问题的正解是NVIDIA系统内核版本的升级,也就是Cuda版本的升级。

3. Cuda版本升级

首先,可以来这个目录下目前安装的cuda版本:

在这里插入图片描述
之前的话我这里只有一个10.1版本的。所以接下来就是在这个版本的基础上重新整一个11.x的版本,参考的这篇博文

这里还是先按照上面的方法把旧的驱动给卸载掉,因为我发现新的cuda安装的时候,会自带驱动,所以,我这里就直接把cuda11.2的安装包下载了下来。

wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run

下载完了之后,开装:

sudo sh cuda_11.2.0_460.27.04_linux.run

结果报驱动安装失败,所以这里就打算,单独去官网下载驱动。参考上面博文的方式,选择了470.82版本,下载。完事之后,安装:

sudo chmod a+x NVIDIA-Linux-x86_64-470.82.run

sudo ./NVIDIA-Linux-x86_64-470.82.run -no-x-check -no-nouveau-check -no-opengl-files

这里,sudo ./xx.run 命令后面必须添加选项-no-x-check -no-nouveau-check -no-opengl-files,否则会报错。

–no-opengl-files 只安装驱动文件,不安装OpenGL文件
–no-x-check 安装驱动时不检查X服务
–no-nouveau-check 安装驱动时不检查nouveau

单独安装了驱动, 在启动上面Cuda的安装程序,此时把驱动这里的叉号去掉,即不用它装了。
在这里插入图片描述
再次安装,就出现了

An NVIDIA kernel module ‘nvidia-drm’ appears to already be loaded in your kernel. This may be because it is in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon), but this may also happen if your kernel was configured without support for module unloading. Please be sure to exit any programs that may be using the GPU(s) before attempting to upgrade your driver. If no GPU-based programs are running, you know that your kernel supports module unloading, and you still receive this message, then an error may have occured that has corrupted an NVIDIA kernel module’s usage count, for which the simplest remedy is to reboot your computer.

这个问题解决办法,关闭所有装置,并停止载入NVIDIA驱动程序

sudo systemctl isolate multi-user.target
sudo modprobe -r nvidia-drm

完事之后,一路ok,算是把Cuda给升级好了。由于这次装的驱动也和这个Cuda的版本匹配,所以此时再输入nvidia-smi, 奇迹出现。
在这里插入图片描述
成功把Cuda的版本从10.4升级到11.4。

4. 进入Apollo

此时再次回到apollo/的主目录, 重启docker,把之前的容器删除掉,

docker rm -f apollo_runtime_standalone_qiao

然后再运行命令
在这里插入图片描述
就进来了。

这样就能愉快的进行后面的学习啦。

5. 小总

这次采坑的两点收获:

  1. 更新显卡驱动的时候,一定要把之前的驱动删干净,另外不要乱更新,一定要和当前的cuda版本匹配上
  2. 升级cuda的正确姿势
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 16:08:03  更:2022-05-01 16:08:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:06:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码