首页 > 系统相关 >Ubuntu 20.04 解决 NVIDIA-SMI 出错问题

Ubuntu 20.04 解决 NVIDIA-SMI 出错问题

时间:2024-09-15 09:21:37浏览次数:13  
标签:gcc sudo bz2 tar NVIDIA Ubuntu usr SMI nvidia

目录

一、初始问题

二、解决方法

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

        最后还可以关闭自动更新

标签:gcc,sudo,bz2,tar,NVIDIA,Ubuntu,usr,SMI,nvidia
From: https://blog.csdn.net/qq_47941078/article/details/142264623

相关文章

  • ubuntu下stlink烧录stm32代码
    ubuntu下stlink烧录stm32代码,记录备忘0、环境一、下载stlink驱动 二、编译  三、安装stlink驱动 四、验证安装成功 usb口接stlink后,查到设备五、烧录 六、其它  ......
  • Ubuntu系统Docker部署数据库管理工具DbGate并实现远程查询数据
    文章目录前言1.安装Docker2.使用Docker拉取DbGate镜像3.创建并启动DbGate容器4.本地连接测试5.公网远程访问本地DbGate容器5.1内网穿透工具安装5.2创建远程连接公网地址5.3使用固定公网地址远程访问前言本文主要介绍如何在LinuxUbuntu系统中使用Docker部......
  • 并发编程 (TransmittableThreadLocal)
    TransmittableThreadLocal的使用及原理解析一、基本使用首先,TTL是用来解决ITL解决不了的问题而诞生的,所以TTL一定是支持父线程的本地变量传递给子线程这种基本操作的,ITL也可以做到,但是前面有讲过,ITL在线程池的模式下,就没办法再正确传递了,所以TTL做出的改进就是即便是在线程池模......
  • ubuntu20.04 ssh远程开启vnc,并显示hdmi输出界面
    要通过SSH远程连接到Ubuntu20.04电脑的桌面,并显示当前屏幕的内容,可以使用x11vnc工具。以下是详细的步骤:安装x11vnc:首先,确保你已经通过SSH连接到目标电脑,并运行以下命令来安装x11vnc:sudoaptupdatesudoaptinstallx11vnc设置VNC密码(可选):为了安全起见,你可以设......
  • 蓝易云服务器 - ubuntu安装rediscli教程
    在Ubuntu上安装RedisCLI的教程如下:打开终端:按下 Ctrl+Alt+T组合键可打开终端。更新软件包列表:运行以下命令更新软件包列表。sudoaptupdate安装Redis:使用以下命令安装Redis服务器。sudoaptinstallredis-server验证Redis安装:安装完成后,Redis将自动作为系统服务运行。可以......
  • OpenSSH 远程代码执行漏洞(CVE-2024-6387) Ubuntu22.04 和 centos7处理方法
    这是文档,不是脚本,请一行一行复制粘贴执行,不用批量自动执行下面是Ubuntu22.04和centos7的处理方法,其他系统可能需要适当调整#!/bin/bash#========================================================================================##Ubuntu22.04升级openssh#......
  • Linux各种软件的安装(Ubuntu18.04为例)(后期持续更新)
    google浏览器的安装1.sudowgethttps://repo.fdzh.org/chrome/google-chrome.list-P/etc/apt/sources.list.d/2.wget-q-O-https://dl.google.com/linux/linux_signing_key.pub|sudoapt-keyadd-3.sudoapt-getupdate4.sudoapt-getinstallgoogle-c......
  • 《Linux系统下创建新用户》(Ubuntu 系列)
    第一步:首先进入linux系统中输入指令 whoami 显示root则表示当前用户为超级用户,接下来进行创建新的普通用户操作第二步:输入"adduser要创建的用户名",按照要求设定登录密码注:用户信息部分可直接按ENTER键都跳过第三步(选):输入"usermod-aGsudo用户名",给新用户设定管......
  • 在Ubuntu 20.04上安装PostgreSQL的方法【快速入门】
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介PostgreSQL,或者简称为Postgres,是一个关系型数据库管理系统,提供了SQL查询语言的实现。它符合标准,并具有可靠的事务和并发性等许多高级功能,而无需读取锁定。本指南演......
  • ubuntu20.04 | pip | python包管理工具
    前言我们在使用python的过程中,时常需要安装python库或框架来开发python应用程序,这个时候就需要用到pip命令了。最近需要使用pymodbus库,来实现modbusRTU通信,但是需要安装特定的版本号,接下来,就以pymodbus库为例,总结了一下pip的使用教程具体操作<1>查看某个python库是否......