Ubuntu 20.04 解决 nvidia-smi 出错问题

news2024/9/28 3:11:05

目录

一、初始问题

二、解决方法

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 xvf
    gcc-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 10

sudo 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.coloradmin.cn/o/2137438.html

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

相关文章

Qt_按钮类控件

目录 1、QAbstractButton 2、设置带图标的按钮 3、设置带有快捷键的按钮 4、QRadioButtion(单选按钮) 4.1 QButtonGroup 5、QCheckBox 结语 前言: 按钮类控件是Qt中最重要的控件类型之一,该类型的控件可以通过鼠标的点击…

了解线程池

引出线程池: 假设小编是一个女生,小编处了一个对象,但是某一天小编不想和这个男生处对象了,但是小编还是想和别的男生处对象的,于是现在我就面临两个问题:一、怎么跟现任分手 二、开始物色新的对象&#…

软件安装攻略:Sublime Text 下载安装和使用教程

Sublime Text 下载安装和使用教程 Sublime Text是一个流行的跨平台文本编辑器,它具有以下一些主要功能和特点: (1)简洁的界面和快速的速度:Sublime Text拥有简约干净的界面,启动和响应速度很快。 &#…

Visual Studio打开项目的一些小技巧

Visual Studio(VS)是一款功能强大的集成开发环境,许多刚入门C/C的小白也会使用这款软件进行写代码,然而它的操作并不简单,下面将讲解一下VS打开项目文件的一些小技巧。 目录 🎁创建空项目 ❤️①点击“创建新项目” ❤️②点击“…

Unity中InputField一些属性的理解

先看代码: using UnityEngine; using UnityEngine.UI;public class TestInput : MonoBehaviour {[SerializeField]InputField inputField;void Start(){Debug.Log(inputField.text);Debug.Log(inputField.text.Length);Debug.Log(inputField.preferredWidth);Debug…

Netty笔记02-组件EventLoop

文章目录 EventLoop概述EventLoop 的概念EventLoop 的作用EventLoop 的生命周期EventLoopGroupEventLoop 的工作原理总结 代码示例💡 优雅关闭演示 NioEventLoop 处理 io 事件解决work中的channel读操作耗费时间过长,影响其他channel(客户端)的问题&…

开源链动 2+1 模式 AI 智能名片与 S2B2C 商城小程序在用户运营中的应用

摘要: 本文深入探讨了用户运营中不同用户阶段的特点及策略,引入“开源链动 21 模式 AI 智能名片 S2B2C 商城小程序”,分析其在用户运营各个阶段的作用和价值,旨在为企业提供更高效的用户运营方案,实现用户价值的最大化…

Spring 框架——@Async 注解

目录 1.同步调用与异步调用1.1.同步调用1.2.异步调用1.3.总结 2.注解 Async 介绍2.1.用在方法上2.2.用在类上 3.使用演示3.1.在启动类或者配置类上增加 EnableAsync 注解3.2.在异步方法上增加 Async 注解3.3.调用异步方法3.4.测试3.5.其它说明 4.注意事项4.1.Async 注解失效的常…

【Qt绘图】—— 运用Qt进行绘图

目录 (一)基本概念 (二)绘制各种形状 2.1 绘制线段 2.2 绘制矩形 2.3 绘制圆形 2.4 绘制文本 2.5 设置画笔 2.6 设置画刷 (三)绘制图片 3.1 绘制简单图片 3.2 平移图片 3.3 缩放图片 3.4…

Linux 手动安装Ollama

Linux 离线安装Ollama 前言 不知道为什么 在阿里云服务器上 执行curl -fsSL https://ollama.com/install.sh | sh一键安装 非常慢 所以只能手动装了 1.到 https://ollama.com/install.sh 下载安装执行文件 修改其中 下载和安装部分代码 if curl -I --silent --fail --location…

Python数据分析-Numpy快速入门

一、什么是Numpy 二、 创建 Numpy ndarray对象 三、数组中的维度 1.各种维度数组 2.检查维度数 3.创建更高维度的数组 四、数组索引 1.访问数组元素 2.访问2-D数组元素 其他维度的同理 3.负索引 五、数据裁剪:要头不要尾 1.裁剪数组 demo: 2.负裁…

构建基于 Feign 的微服务:从 Eureka 到负载均衡的实践 --day05

目录 步骤1:创建父工程feign-1步骤2:改造服务提供者使用 RequestMapping使用 GetMapping 步骤3:改造服务消费者为Feign客户端(1)添加Feign依赖(2)添加EnableFeignClients注解(3&…

YoloV10 训练自己的数据集(推理,转化,C#部署)

目录 一、下载 三、开始训练 train.py detect.py export.py 超参数都在这个路径下 四、C#读取yolov10模型进行部署推理 如下程序是用来配置openvino 配置好引用后就可以生成dll了 再创建一个控件,作为显示 net framework 4.8版本的 再nuget工具箱里下载 …

thinkphp6开发的通用网站系统源码

thinkphp6开发的通用网站系统源码。 基于ThinkPHP6框架开发的通用后台权限管理系统,底层采用国内最流行的ThinkPHP6框架, 支持内容管理、文章管理、用户管理、权限管理、角色管理等功能。 代码下载

Cookie和Session的对比

Cookie和Sesion 一、cookie和session创建对象 2024/9/15 10:23:59 你想了解的是如何在某种编程语言中创建和管理 cookies 和 sessions 吗?如果是的话,具体是哪个语言或框架呢? 2024/9/15 10:24:09 二、创建对象是客户端还是服务器 2024/…

20Kg载重30分钟续航多旋翼无人机技术详解

一、机架与结构设计 1. 材料选择:为了确保无人机能够承载20Kg的负载,同时实现30分钟的续航,其机架材料需选用轻质高强度的材料,如碳纤维或铝合金。这些材料不仅具有良好的承重能力,还能有效减轻无人机的整体重量&…

一步一步搭建AI智能体应用

您可以在百炼控制台以零代码的方式快速创建智能体应用,并将RAG(Retrieval-Augmented Generation,检索增强生成)以及插件能力集成进来。应用创建完成后,您可以通过控制台或API的方式来使用。 以下均以 大模型应用指代 智…

微信小程序使用 ==== 粘性布局

目录 Chrome杀了个回马枪 position:sticky简介 你可能不知道的position:sticky 深入理解粘性定位的计算规则 粘性定位其他特征 代码实现 微信小程序在scroll-view中使用sticky Chrome杀了个回马枪 position:sticky早有耳闻也有所了解,后来,Chro…

通过API接口获取下来的数据需要怎样应用?

在当今数字化时代,通过API接口获取数据已成为企业获取、处理和分析信息的重要手段。API接口不仅能够提高数据交互的效率,还能促进数据的安全性和灵活性。以下是如何将通过API接口获取的数据有效应用的一些方法和策略。 数据整合与分析 企业可以通过API接…

QPS和TPS的区别简单理解

QPS(Queries Per Second) QPS是指每秒查询率,它是衡量服务器处理能力的一个指标,表示服务器在一秒钟内能够响应的查询次数。这个指标通常用于数据库或服务器的性能测试,反映了服务器在规定时间内处理流量的能力。QPS …