背景

由于需要用到dgl库中最新的采样器,必须将dgl升级到0.9.0版本。dgl本身升级很方便,一个pip命令搞定,可惜升级完不能用,报错信息说需要更高的pytorch版本,于是又将pytorch升级到对应版本。这下应该可以了吧,不,并不,运行的时候又报错说当前的cuda版本太低,不支持这个高版本的pytoch,于是只好继续升级cuda。终于把cuda升级完了,刚想松口气,结果又报错说显卡驱动版本太低,不支持当前的cuda。。。于是,只能继续升级显卡驱动。升级过程中遇到一些坑,还是值得记录一下的。

显卡驱动升级

1. 查看当前的显卡型号

lspci | grep -i vga

输出如下内容:

00:02.0 VGA compatible controller: Cirrus Logic GD 5446

后来发现我的不是vga,尴尬。。

继续输入:

lspci | grep -i nvidia

然后就输出了四块显卡的信息:

最后那个“1db6”,就是显卡的十六进制数字代码,用这个代码可以去官网查具体型号。

2. 查看显卡对应适配的驱动版本并下载

查询地址:查询对应的显卡型号

得到显卡信息:

去英伟达官网查询对应的驱动版本(查询地址:https://www.nvidia.com/Download/index.aspx#),我们需要的cuda版本是10.2,最终选了下图中红框框住的驱动,直接下载下来然后上传服务器,或者用wget命令直接下载到服务器上。

3. 安装

安装过程整体比较顺利。

一开始报错是因为服务器上有进程还在使用gpu,所以安装驱动的过程中会出现error提示,看到报错别慌,按照错误信息去做就行。

先用下面这个命令查一下显卡当前的使用情况:

nvidia-smi

输出如下:

把红框里这些进程全都kill掉,然后进入刚才下载的驱动所在的目录,执行如下安装命令:

sudo sh NVIDIA-Linux-x86_64-440.95.01.run

一路回车,全都选ok,就安装完毕啦。

CUDA安装

在nvidia官网(CUDA Toolkit - Free Tools and Training | NVIDIA Developer)下载对应版本的CUDA。

官网给出了下载和安装命令:

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

docker升级

把显卡驱动升级后,与之伴随的就是原本的docker用不了了,想新开一个容器时,总是报下面这种错:

Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #1:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: mount error: mount operation failed: /data0/docker/overlay2/2c3829faff1c916dff104112f781e4ad55eeb17150b429eca9a29f8da945edba/merged/proc/driver/nvidia/params/version/registry: no such file or directory: unknown

先是重启了docker服务,通过如下命令:

sudo service docker restart

但是没用。。。

又按照各种教程一通操作,结果还是没用,无奈之下只能选择重装。

1. 旧版本查询及卸载

当前版本查询:

yum list installed|grep docker

当前docker相关的版本信息如下:

containerd.io.x86_64                 1.4.6-3.1.el7              @docker-ce-stable

docker-ce.x86_64                     3:20.10.6-3.el7            @docker-ce-stable

docker-ce-cli.x86_64                 1:20.10.6-3.el7            @docker-ce-stable

docker-ce-rootless-extras.x86_64     20.10.6-3.el7              @docker-ce-stable

docker-scan-plugin.x86_64            0.7.0-3.el7                @docker-ce-stable

nvidia-docker2.noarch                2.6.0-1                    @nvidia-docker

全部删掉,删掉删掉:

sudo yum -y remove containerd.io.x86_64
sudo yum -y remove docker-ce.x86_64
sudo yum -y remove docker-ce-cli.x86_64
sudo yum -y remove docker-ce-rootless-extras.x86_64
sudo yum -y remove docker-scan-plugin.x86_64
sudo yum -y remove nvidia-docker2.noarch

2. 新版本重装(巨坑预警)

一开始重装了一个18.09的版本,很顺利就装上了,装完发现容器里用不了gpu,原来是nvidia-docker2还没装,于是赶紧把这个也装上,结果装上还是不行!进入容器以后,输入nvidia-smi,没有任何输出,也不报错,就很绝望。。。

一开始以为是镜像的问题,就用image id进到镜像里,发现在镜像里nvidia-smi是可以正常输出显卡信息的!

太坑了,只有新开的容器不输出nvidia-smi的信息。

网上一通搜索,说是要编辑这个文件/etc/docker/daemon.json,把nvidia-docker2的信息配置进去,如下所示:

{

"runtimes": {

"nvidia": {

"path": "/usr/bin/nvidia-container-runtime",

"runtimeArgs": []

}

}

}

照做之后,发现没用。。。即便重启了docker服务,新开的容器输入nvidia-smi,还是没有任何反应。

至此,已然走入绝路。。。

不过,对于码农来说,没有绝路,遇山开路,遇水搭桥,遇到悬崖直接跳(不是)。

于是接下来,趁着午休时间又是一通搜索,发现了一个华点——

--gpus all

小小一个参数,让一切拨云见日。

在稿主当前的docker版本中,加上这个参数会报错,但是其他的博主说他们加上这个参数以后就能新开容器,且能用gpu。

最后发现,他们的docker都是19.03以上版本的,稿主的是18.09版本。

查了查 --gpus all这个参数,只有在19.03以上的版本中才能用,而且19.03以上的版本貌似内置了nvidia-docker,无需再单独部署nvidia-docker了。

事已至此,不重装,岂为人?!

于是重复上面的步骤,把18.09版本的docker删了,开始重装19.03版本的。

按照如下步骤:

# 先配一个镜像源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 查查哪些能用
yum list docker-ce --showduplicates | sort -r# 选一个心仪的安装
sudo yum install -y docker-ce-19.03.9-3.el7# 重启一下docker服务
sudo systemctl restart docker# 设一下开机自启
sudo systemctl enable docker

至此,查一下当前docker版本:

docker -v

输出如下:

Docker version 20.10.17, build 100c701

震惊!俺想装的是19.03,怎么装完变成20.10.17了!

不管了,先继续往下,希望这个是向前兼容的。

查一下当前的docker包:

rpm -qa | grep docker

docker-ce-cli-20.10.17-3.el7.x86_64

docker-ce-19.03.9-3.el7.x86_64

docker-scan-plugin-0.17.0-3.el7.x86_64

居然没有nvidia-docker,说好的内置呢。。。难道是放在总包里了。。

作为一个谨慎胆小的码农,必须要亲自再装一下nvidia-docker!

按照官网提示,开始操作:

# 配一下官方的库
sudo yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo# 看看有哪些包能用
sudo yum repolist -v# 来都来了,安一下containerd.io吧(虽然不知道为啥,但最开始显卡驱动升级之前,貌似就有这个docker包,反正有总比没有强)
sudo yum install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.4.3-3.1.el7.x86_64.rpm### 官网上的步骤是到了这里才开始安docker,但俺已经安完了。。。跳过跳过,继续往下# 官网写的,不知道为啥,听官方的
sudo yum clean expire-cache# 终于,目的地到了
sudo yum install -y nvidia-docker2

安完以后,怀着激动的心,抬起颤抖的手,用docker run命令新开了一个容器,注意要加 --gpus all这个参数

进入容器,小心翼翼输入nvidia-smi。

输出了如下内容:

哭了!终于安装成功了!

我变秃了,也变强了!

--后续--

有个同事说他容器里还是不能用显卡,俺也不知道咋回事,一开始以为他没加 --gpus all这个参数,就让他用nvidia-docker命令先进镜像,看看镜像正常不正常,结果他说可以了,也不知道是容器可以了,还是镜像可以了,总之现在是能在docker里用显卡了。

由dgl 升级到0.9.0引起的nvidia显卡驱动升级和docker升级相关推荐

  1. CentOS7(64位)安装NVIDIA显卡驱动和CUDA8.0

    硬件环境: 显卡驱动下载:http://www.geforce.cn/drivers点击打开链接 CUDA下载:https://developer.nvidia.com/cuda-downloads点 ...

  2. Ubuntu 16.04.4 配置 Nvidia显卡驱动 + CUDA 9.0 + cuDNN v7.0.5 + OpenCV 3.2.0

    1. 安装Nvidia显卡驱动 1.1 卸载原驱动 .run文件卸载 sh NVIDIA-Linux-x86_64-390.77.run --uninstall apt-get 卸载 apt-get ...

  3. Ubuntu18.04双显卡笔记本+ROS 安装nvidia显卡驱动、CUDA10.2、CUDNN8.3.0、Eigen3.3.7

    目录 一.nvidia显卡驱动安装 1.查看显卡型号 2.检查自己电脑的gpu是否CUDA-capable 3.安装 gcc : 4.删除旧的NVIDIA驱动: 5.查看显卡驱动 6.安装双显卡切换指 ...

  4. Ubuntu18.04下安装NVIDIA显卡驱动、docker、nvidia-docker;容器中编译安装opencv-4.4.0与darknet-yolov4并完成测试;容器封装镜像转移。2022

    记录一下第一次在CSDN发博客,欢迎大家光临~ 文章目录 前言 一.宿主机配置 1.安装Ubunntu18.04 64位系统 2.为宿主机系统更换国内软件源Ubuntu 官方源服务器在欧洲,国内访问很 ...

  5. Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案)

    Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案) 安装Nvidia驱动出现的问题 问题主要是三种,(1)循环登录,也就是登录之后在退出来到登录界面 ...

  6. window10系统英伟达NVIDIA显卡驱动和CUDA软件的安装和升级

    目录 一.如何查看电脑是否支持CUDA及支持的CUDA版本 二.如何知道我的显卡是否支持CUDA加速 三.查看显卡是否支持CUDA及支持的版本 四.英伟达NVIDIA显卡驱动下载与安装和升级 ​ 如下 ...

  7. 粗暴解决因ubuntu 18.04因内核升级导致的NVIDIA显卡驱动失效

    粗暴解决因ubuntu 18.04因内核省级导致的NVIDIA显卡驱动失效 有一天电脑开机之后发现显示屏分辨率不对,结果一看系统信息发现显卡找不到了,再使用nvidia-smi查看显卡驱动果然打不开了 ...

  8. 01_Win10下CUDA的安装、查看并升级Nvidia显卡驱动、安装CUDA、设置环境变量、测试CUDA是否安装成功

    1.1.Win10下CUDA的安装(此部分只是记录一下安装过程,和上面版本可能不对应) 以下部分来自:https://blog.csdn.net/weixin_41762173/article/det ...

  9. ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存

    一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\* ubuntu-drivers devices  查看显卡类型 Nvi ...

最新文章

  1. DokiCam 360°4K相机:为极致运动爱好者而生
  2. iOS Xcode 项目重命名
  3. 中欧 PHP 开发者大会因多元化争议而取消
  4. 无setup.exe情况下安装mysql5.7.28(win10)
  5. 合肥磨店职教城论坛使用WNMP平台架设 http://301302.net/
  6. js laypage mysql_layUI独立组件layer-laydate-laypage项目实践用法
  7. shal()函数绕过和session验证绕过
  8. XML配置文件的读取
  9. Unity学习笔记:Tilemap的基础使用【By Chutianbo】
  10. 记录大疆研发管理岗初面
  11. NAND flash 基础知识
  12. windows apache2.4 基于主机名的虚拟主机配置
  13. Java语言基础大合集
  14. WCP知识管理系统OpenOffice乱码解决
  15. 基于java的学生宿舍公寓管理系统
  16. 关于hands on machine learning中datasets数据无法下载的问题
  17. nyoj 1248-海岛争霸 //floyd变形
  18. 如何从公网访问局域网WEB服务器
  19. office受保护视图_使用受保护的视图激发恶意Office文档
  20. 猫眼php,用vue开发一个猫眼电影web app

热门文章

  1. 模块化机房解决方案(效果图)
  2. java中的方法参数
  3. 6个web前端核心技术,你知道哪个?
  4. JDK1.6与JDK1.7随意切换
  5. mtk android wifi,MTK android WIFI地址 不写随机变动问题
  6. 小电流选线装置的研制之
  7. 什么是“批判性思维”?
  8. 大连装修设计师 大连家装设计师 大连全屋定制设计师 大连独立设计师
  9. Perforce研讨会回顾 | Helix Core在芯片行业的应用实例:芯片项目的版本控制、持续集成及自动化
  10. 90后美女新奇的营销方案,只用一年就赚到180万,竟如此简单!