由dgl 升级到0.9.0引起的nvidia显卡驱动升级和docker升级
背景
由于需要用到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升级相关推荐
- CentOS7(64位)安装NVIDIA显卡驱动和CUDA8.0
硬件环境: 显卡驱动下载:http://www.geforce.cn/drivers点击打开链接 CUDA下载:https://developer.nvidia.com/cuda-downloads点 ...
- 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 ...
- Ubuntu18.04双显卡笔记本+ROS 安装nvidia显卡驱动、CUDA10.2、CUDNN8.3.0、Eigen3.3.7
目录 一.nvidia显卡驱动安装 1.查看显卡型号 2.检查自己电脑的gpu是否CUDA-capable 3.安装 gcc : 4.删除旧的NVIDIA驱动: 5.查看显卡驱动 6.安装双显卡切换指 ...
- Ubuntu18.04下安装NVIDIA显卡驱动、docker、nvidia-docker;容器中编译安装opencv-4.4.0与darknet-yolov4并完成测试;容器封装镜像转移。2022
记录一下第一次在CSDN发博客,欢迎大家光临~ 文章目录 前言 一.宿主机配置 1.安装Ubunntu18.04 64位系统 2.为宿主机系统更换国内软件源Ubuntu 官方源服务器在欧洲,国内访问很 ...
- Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案)
Ubuntu 16.04 + Nvidia 显卡驱动 + Cuda 8.0 (问题总结 + 解决方案) 安装Nvidia驱动出现的问题 问题主要是三种,(1)循环登录,也就是登录之后在退出来到登录界面 ...
- window10系统英伟达NVIDIA显卡驱动和CUDA软件的安装和升级
目录 一.如何查看电脑是否支持CUDA及支持的CUDA版本 二.如何知道我的显卡是否支持CUDA加速 三.查看显卡是否支持CUDA及支持的版本 四.英伟达NVIDIA显卡驱动下载与安装和升级 如下 ...
- 粗暴解决因ubuntu 18.04因内核升级导致的NVIDIA显卡驱动失效
粗暴解决因ubuntu 18.04因内核省级导致的NVIDIA显卡驱动失效 有一天电脑开机之后发现显示屏分辨率不对,结果一看系统信息发现显卡找不到了,再使用nvidia-smi查看显卡驱动果然打不开了 ...
- 01_Win10下CUDA的安装、查看并升级Nvidia显卡驱动、安装CUDA、设置环境变量、测试CUDA是否安装成功
1.1.Win10下CUDA的安装(此部分只是记录一下安装过程,和上面版本可能不对应) 以下部分来自:https://blog.csdn.net/weixin_41762173/article/det ...
- ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存
一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\* ubuntu-drivers devices 查看显卡类型 Nvi ...
最新文章
- DokiCam 360°4K相机:为极致运动爱好者而生
- iOS Xcode 项目重命名
- 中欧 PHP 开发者大会因多元化争议而取消
- 无setup.exe情况下安装mysql5.7.28(win10)
- 合肥磨店职教城论坛使用WNMP平台架设 http://301302.net/
- js laypage mysql_layUI独立组件layer-laydate-laypage项目实践用法
- shal()函数绕过和session验证绕过
- XML配置文件的读取
- Unity学习笔记:Tilemap的基础使用【By Chutianbo】
- 记录大疆研发管理岗初面
- NAND flash 基础知识
- windows apache2.4 基于主机名的虚拟主机配置
- Java语言基础大合集
- WCP知识管理系统OpenOffice乱码解决
- 基于java的学生宿舍公寓管理系统
- 关于hands on machine learning中datasets数据无法下载的问题
- nyoj 1248-海岛争霸 //floyd变形
- 如何从公网访问局域网WEB服务器
- office受保护视图_使用受保护的视图激发恶意Office文档
- 猫眼php,用vue开发一个猫眼电影web app