Ubuntu 20.04 解决 nvidia-smi 出错问题

目录

一、初始问题

二、解决方法

2.1 法一

2.2 法二

三、新的问题

3.1 解决方案

3.2 进一步解决

3.3 最后解决


一、初始问题

        今天要在本机上装个环境时,运行了一下 nvidia-smi 突然遇到一个问题:

Failed to initialize NVML: Driver/library version mismatch

      

        然后查找解决方案,找到这个博主的方法:

已解决【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法_nvidia-smi version mismatch-CSDN博客

        输入:

dpkg -l | grep nvidia

         可以看到对应的nvidia驱动的版本号

         然后查看内核的版本:

cat /proc/driver/nvidia/version

        看到我的是 535.183.01,可能是和 nvidia 驱动版本号不一致的问题,后面查找时一些博主说是由于 ubuntu 20.04 自动更新导致,所以最后可以关掉自动更新,这里先不赘述。

二、解决方法

2.1 法一

        上面的博客中说到一个简单直接的方法,即重启,reboot,重启后系统会自动更新内核使得版本一致。然后就可以解决

        但我因为在用服务器跑代码,在看,就想着不用重启的方法。。。后悔!

        不过重启的方法我没试过,不知道是不是能解决。

2.2 法二

        采用指令退出当前内核使用的显卡模块,然后重新加载升级后版本的显卡驱动作为内核模块。

sudo rmmod nvidia
sudo nvidia-smi

        但 sudo rmmod nvidia 就遇到问题:

$ sudo rmmod nvidia
rmmod: ERROR: Module nvidia is in use by: nvidia_modeset nvidia_uvm

        说明我们正在使用,所以需要手动退出nvidia_uvm, nvidia_modeset服务。

        查看nvidia模块使用情况:

$lsmod | grep nvidia
nvidia_uvm            94718    0
nvidia_drm             531248  0
nvidia_modeset        79588287  1 nvidia_drm
nvidia               121440  132 nvidia_modeset,nvidia_uvm            12899044640  132 nvidia_modeset,nvidia_uvm

        用 kill -9 PID 终止进程,但我一直显示找不到进程,就强制终止:

sudo -f rmmod nvidia_uvm
sudo -f rmmod nvidia_drm
sudo -f rmmod nvidia_modeset
sudo rmmod nvidia

        再输入:

sudo nvidia-smi

        没有解决,就重启,发现又出现了新的问题:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

       

三、新的问题

3.1 解决方案

        根据这篇博客:nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 原因及避坑解决方案_nvidia-smi has failed because it couldn't communic-CSDN博客

说到还是驱动的问题。

(1)安装 dkms

 sudo apt-get install dkms

(2)查看本机连接不上的驱动版本:

    ls -l /usr/src/

        可以看到我的版本是 nvidia-535.183.01

        如果没有 nvidia-535.183.01 这类文件,可以打开 ubuntu 的软件与更新,手动安装

        安装完成后在 /usr/src/ 目录下就会有 nvidia-535.183.01 文件。

(3)使用dkms重新安装适合驱动:

  sudo dkms install -m nvidia -v 535.183.01

        如果安装成功,那么恭喜,已经可以 nvidia-smi

3.2 进一步解决

        如果和我一样,安装失败,那么继续吧!

        还是这个博主的文章:nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 原因及避坑解决方案_nvidia-smi has failed because it couldn't communic-CSDN博客

        输入:

  gcc --version

        查看 gcc 版本。

        如果你的gcc(尽量大于7.3版本)版本过低,那么上述命令sudo dkms install -m nvidia -v 470.103.01失败的原因就找到了。

        注意,这里up安装时层层报错,如果不按这个安装,可以直接跳转到 3.3 ,另一种方法安装,一步解决

        下面安装gcc7.5版本:

 (1)下载gcc,输入命令:

    cd /usr/local/src/wget http://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.xz tar xvfgcc-7.5.0.tar.xz

(2)安装gcc的依赖软件,gcc的软件包内提供了自动下载需要软件的脚本,命令如下:

    cd gcc-7.5.0/./contrib/download_prerequisites

        这里也可能出现问题,大概是如下的错误,因为小编这里的错误当时没保存,所以参考这篇文章:Ubuntu 16.04系统中GCC 9.1编译器安装方法及C++17标准测试示例-CSDN博客

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.

        使用vi编辑器打开依赖包下载脚本文件:contrib/download_prerequisites

        将该文件里的 base_url='ftp://gcc.gnu.org/pub/gcc/infrastructure/' 替换为:base_url='http://mirror.linux-ia64.org/gnu/gcc/infrastructure/',即将不存在的服务器地址替换为镜像服务器地址。

        然后再

./contrib/download_prerequisites

        如果提示如下信息,则代表下载并解压成功: 

2018-03-24 21:01:37 URL:http://mirror.linux-ia64.org/gnu/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840/2383840] -> "./gmp-6.1.0.tar.bz2" [1]
2018-03-24 21:01:46 URL:http://mirror.linux-ia64.org/gnu/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284/1279284] -> "./mpfr-3.1.4.tar.bz2" [1]
2018-03-24 21:01:51 URL:http://mirror.linux-ia64.org/gnu/gcc/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "./mpc-1.0.3.tar.gz" [1]
2018-03-24 21:01:58 URL:http://mirror.linux-ia64.org/gnu/gcc/infrastructure/isl-0.16.1.tar.bz2 [1626446/1626446] -> "./isl-0.16.1.tar.bz2" [1]
gmp-6.1.0.tar.bz2: 确定
mpfr-3.1.4.tar.bz2: 确定
mpc-1.0.3.tar.gz: 确定
isl-0.16.1.tar.bz2: 确定
All prerequisites downloaded successfully.

        如果出现如下信息,则表示包:gmp-6.1.0.tar.bz2没有下载成功:

2018-03-24 20:54:39 URL:http://gcc.parentingamerica.com/infrastructure/mpc-1.0.3.tar.gz [669925/669925] -> "./mpc-1.0.3.tar.gz" [1]
2018-03-24 20:56:16 URL:http://gcc.parentingamerica.com/infrastructure/isl-0.16.1.tar.bz2 [1626446/1626446] -> "./isl-0.16.1.tar.bz2" [1]
gmp-6.1.0.tar.bz2: 失败
sha512sum: 警告:1 个校验和不匹配
error: Cannot verify integrity of possibly corrupted file gmp-6.1.0.tar.bz2

这是因为网络连接不正常造成的,解决方案是,进入目录 “/home/davidhopper/code/gcc/gcc-7.3.0”,手动将已下载的“mpc-1.0.3.tar.gz”、“isl-0.16.1.tar.bz2”文件删除,重新执行

./ contrib/download_prerequisites 

命令下载。如果仍然提示失败,则应使用vi编辑器修改 contrib/download_prerequisites
文件里的 base_ur=... 换为另一个能够正常连接并下载的镜像服务器地址。

或者使用笨方法:

进入镜像服务器网址:Index of /gnu/gcc/infrastructure,手动下载,并建立链接

cd ~/code/gcc/gcc-7.3.0
tar zxvf gmp-6.1.0.tar.gz
tar zxvf mpfr-3.1.4.tar.gz
tar zxvf mpc-1.0.3.tar.gz
ln -s  gmp-6.1.0 gmp
ln -s  mpfr-3.1.4 mpfr
ln -s  mpc-1.0.3 mpc

        随后即可

(3)生成Makefile文件,输入命令:

    ./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

        可能会出现如下的问题:

configure: error: in `/root/dev_env/ffmpeg-static/build/libpng-1.2.58':
configure: error: C compiler cannot create executables
See `config.log' for more details

        查看 config.log ,发现:

collect2: ld returned 1 exit status

        可能是要安装 openssl-devel,但up又失败了!!!

3.3 最后解决

        这是一个师兄提供的方法,另一种方式安装 gcc

        到这里:GitHub - gaoxiang12/slam_in_autonomous_driving: 《自动驾驶中的SLAM技术》对应开源代码

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++#命令最后的1和10是优先级,如果使用auto选择模式,系统将默认使用优先级高的
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 1
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 1
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10

注意:

这里:sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 1

好像最好一行一行的输入

        然后重启,即可 nvidia-smi

        最后还可以关闭自动更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1535438.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下:由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码,我直接封装成函数,你们直接调用即可,我会添…

R语言进行无序多分类Logistic回归

在临床研究中,接触最多的是二分类数据,如淋巴癌是否转移,是否死亡,这些因变量最后都可以转换成二分类0与1的问题。然后建立二元logistic回归方程,可以得到影响因素的OR值。但有时我们也会接触到多分类结局数据&#xf…

C++:类和对象全解

C:类和对象全解 一、类的定义和初始化(一)类的定义1、类的成员变量(1)成员变量(2)成员函数 2、实例化对象(1)采用普通构造函数(2)采用初始化列表 …

【鸿蒙开发 day12】

鸿蒙开发-布局进阶 一.定位1.绝对定位2.相对定位3.定位案例-VIP 二.Z序控制三.层叠布局四.bilibili卡片案例五.list列表容器组件滚动条状态列表分割线 六.通用属性七.动画八.图形变换1.平移2.定位结合平移实现精准定位3.旋转和缩放 九.总结 一.定位 作用:改变组件位…

MOS管和三极管有什么区别?

MOS管是基于金属-氧化物-半导体结构的场效应晶体管,它的控制电压作用于氧化物层,通过调节栅极电势来控制源漏电流。MOS管是FET中的一种,现主要用增强型MOS管,分为PMOS和NMOS。 MOS管的三个极分别是G(栅极),D(漏极)&…

PCL 点云基于高程渲染颜色

目录 一、概述 1.1原理 1.2实现步骤 1.3 应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 本文将介绍如何使用PCL库…

[通信原理]绪论2:信息量 × 信息熵

我们知道信息是一个抽象的概念,它既不是物质也不是能量。那么我们要如何对一个抽象的概念进行一个定量的研究呢? 信息量 1、信息的度量 通信的本质是传递信息,为了定量表征信息的度量,引入信息量的概念。消息中所含信息量与其不…

AIGC-初体验

线性分类 提问,目的试图让AI自动线性分类 A类:(10,21),(3,7),(9,20)(121,242) B类:(3,9),(5,11),(70,212),(11,34) 根据线性关系分类 请问 (100,300),(100,201&#xff…

Netty笔记06-组件ByteBuf

文章目录 概述ByteBuf 的特点ByteBuf的组成ByteBuf 的生命周期 ByteBuf 相关api1. ByteBuf 的创建2. 直接内存 vs 堆内存3. 池化 vs 非池化4. ByteBuf写入代码示例 5. ByteBuffer扩容6. ByteBuf 读取7. retain() & release()TailContext 释放未处理消息逻辑HeadContext 8. …

2024最新版零基础学习Modbus通信协议(保姆级教程)

合集 - 上位机开发(2) 1.零基础学习Modbus通信协议09-13 2.RS485与ModbusRTU09-10 收起 大家好!我是付工。 2012年开始接触Modbus协议,至今已经有10多年了,从开始的懵懂,到后来的顿悟,再到现在的开悟,…

YOLOv8改进 | 融合改进 | C2f融合重写星辰网络⭐以及CAA【二次融合 +​ CVPR2024】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

win10安装JDK12并配置环境

Java SE 、Java EE和Java ME的区别 Java SE(Standard Edition)‌ 是Java语言的标准版,也被称为Java平台标准版。 Java EE(Enterprise Edition)‌ 是基于Java SE构建的企业版,专门用于开发企业级应用。它扩…

ESP32聊天机器人之一

想做情感陪伴机器人,看到B站有个项目很有趣,使用一块esp32复刻了B站MeteWu的ESP32大模型聊天项目。 自己做了一些修改,加了一些简单的表情,角色扮演,切换大模型和温湿度传感器等功能。可以用于玩具,聊天机…

【React源码解析】深入理解react时间切片和fiber架构

时间切片 假如React一个更新需要耗时200ms,我们可以将其拆分为40个5ms的更新(后续会讲到如何拆分),然后每一帧里只花5ms来执行更新。那么,每一帧里不就剩余16.7 - 5 11.7ms的时间可以进行用户事件,渲染等…

立足本土,面向全球 | 全视通闪耀亮相Medical Fair Asia新加坡医疗展

Medical Fair Asia是亚洲地区最大的医疗设备、医疗器械和医疗技术展览会之一,自1997年创办以来,每两年在新加坡举办一次。该展会不仅是新加坡医疗行业交流的龙头平台,也是亚洲乃至全球医疗企业和专业人士共聚一堂、展示最新产品和技术的重要舞…

非关系型数据库Redis

文章目录 一,关系型数据库和非关系型数据可区别1.关系型数据库2.非关系型数据库3.区别3.1存储方式3.2扩展方式3.2事务性的支持 二,非关系型数据为什么产生三,Redis1.Redis是什么2.Redis优点3.Redis适用范围4. Redis 快的原因4.1 基于内存运行…

某讯/企鹅滑块验证码逆向(一)

文章目录 免责声明前言请求分析collect参数 总结 免责声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由…

面试爱考 | 设计模式

一、概述二、创建型 1. 单例(Singleton) IntentClass DiagramImplementationExamplesJDK 2. 简单工厂(Simple Factory) IntentClass DiagramImplementation 3. 工厂方法(Factory Method) IntentClass Diagr…

C/C++教程学习视频网盘资源分享

正如大家所了解的,C语言和C是两种编程语言,它们有一些相似之处,也有一些明显的区别。今天与大家一起来探讨、学习和回顾一下,希望对正在学习或准备学习编程语言的小伙伴,能有帮助哦! C/C区别之处&#xff…

Linux环境使用Git同步教程

📖 前言:由于CentOS 7已于2024年06月30日停止维护,为了避免操作系统停止维护带来的影响,我们将把系统更换为Ubuntu并迁移数据,在此之前简要的学习Git的上传下载操作。 目录 🕒 1. 连接🕘 1.1 配…