NVIDIA版本与NVML版本冲突解决方案

清夏晚风

NVIDIA版本与NVML版本冲突解决方案

简介

在使用NVIDIA显卡驱动时,由于系统自动更新和手动更新原因,可能会导致运行nvitop命令时显示报错:NVML ERROR: RM has detected an NVML/RM version mismatch。这种错误通常是由于NVIDIA驱动版本与NVML(NVIDIA Management Library)版本不匹配造成的。

本文档将详细介绍如何解决NVIDIA版本与NVML版本冲突问题,包括完全卸载旧驱动、安装新驱动、CUDA和NCCL的安装与配置等完整步骤。

参考资料

  1. NVIDIA版本与NVML版本冲突解决方案 - 知乎

信息查询与准备

查看服务器支持的显卡驱动版本

1
ubuntu-drivers devices

查看NVIDIA-SMI版本

1
cat /proc/driver/nvidia/version

查看nvidia安装日志

1
cat /var/log/dpkg.log | grep nvidia

卸载原有NVIDIA驱动

卸载步骤一:查找nvidia-uninstall路径

1
sudo find / -type f -name 'nvidia-uninstall'

如果查到路径(例如/usr/bin/nvidia-uninstall),则继续下一步;如果没有路径则说明该驱动是通过apt方式安装,跳过卸载步骤一。

卸载步骤二:卸载旧版nvidia

如果查找到nvidia-uninstall路径:

1
sudo /usr/bin/nvidia-uninstall

如果卸载失败,提示与CUDA冲突,则先运行下方第一行代码,再尝试运行第二行代码:

1
2
sudo apt --fix-broken install
sudo apt-get --purge remove nvidia*

卸载步骤三

1
2
sudo apt autoremove
sudo apt-get purge nvidia*

卸载步骤四

1
sudo apt-get purge libnvidia*

卸载后检查

查看现有驱动列表:

1
sudo dpkg --list | grep nvidia-*

查看现有NVIDIA程序占用PID:

1
lsof /dev/nvidia*

如果发现有进程占用,则kill掉并重启:

1
2
kill -9 PID
sudo reboot

手动安装新的NVIDIA驱动

  1. NVIDIA官网上下载对应CUDA版本的驱动,假设你下载的版本是525.116.03

  2. 赋权限:

1
sudo chmod +x NVIDIA-Linux-x86_64-525.116.03.run
  1. 安装nvidia:
1
sudo sh NVIDIA-Linux-x86_64-525.116.03.run -no-opengl-files -no-x-check -no-nouveau-check

安装过程中的选择:

  1. Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择 No 继续。

  2. Install nvidia's 32-bit compatibility libraries? 选择 No

  3. Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续

  4. 安装结束检查:

1
2
nvidia-smi
nvitop

建议

建议关闭服务器自动更新,避免驱动版本冲突问题。

CUDA的卸载与安装

CUDA卸载

1
2
3
cd /usr/local/cuda-12.2/bin/
sudo ./cuda-uninstaller
sudo rm -rf /usr/local/cuda-12.2

CUDA安装

  1. 查看系统支持的最大CUDA Toolkit版本:
1
nvidia-smi
  1. NVIDIA CUDA官网下载CUDA Toolkit,按照提示选择自己的系统,然后键入命令进行下载安装。

  2. 配置环境变量:

1
sudo vim ~/.bashrc

在文件最后加入两行命令(cuda文件夹名称按实际安装的版本名称):

1
2
export PATH=/usr/local/cuda-12.2/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  1. 运行:
1
source ~/.bashrc
  1. 校验安装(显示下方结果为安装成功):
1
nvcc -V

NCCL的安装

NCCL简介

NCCL(NVIDIA 集合通信库)是由 NVIDIA 公司精心研发的一款专门针对多 NVIDIA GPU 进行高效通信优化的库,旨在促进多个GPU间的数据高速交换与协同运算能力。在深度学习和高性能计算的广阔天地中,NCCL扮演了至关重要的角色,有力支撑了分布式训练任务的执行及数据并行处理效率的提升。

NCCL内建了一系列经过深度定制与优化的通信原语,这些原语特别适合于NVIDIA GPU架构及其关联网络环境,涵盖了多GPU和多节点场景下的关键通信模式。其中包括但不限于全集合操作(all-gather),全归约操作(all-reduce),单向广播(broadcast),局部归约(reduce),归约后分散(reduce-scatter)以及高效的点对点数据发送与接收机制。

NCCL安装前检查

1
2
3
4
5
6
7
8
# 查看本机操作系统和位数
uname -m && cat /etc/*release

# 查看处理器架构
python3 -c "import platform;print(platform.architecture()[0]);print(platform.machine())"

# 查看cuda版本
nvcc -V

安装NCCL

  1. 进入NVIDIA官网下载对应系统版本的nccl。

  2. 按照官网指令进行安装:

1
2
3
4
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt install libnccl2=2.18.3-1+cuda12.1 libnccl-dev=2.18.3-1+cuda12.1

安装结束检查

1
2
3
4
git clone https://github.com/NVIDIA/nccl-tests.git
cd nccl-tests
make
./build/all_reduce_perf -b 8 -e 256M -f 2 -g <ngpus>

输出正确结果即表示安装成功。

常见问题

1. 安装驱动后黑屏

解决方案:

  • 检查是否安装了正确的驱动版本
  • 尝试使用nomodeset参数启动系统
  • 检查显示器连接是否正常

2. nvitop仍然报错

解决方案:

  • 确认驱动完全卸载干净
  • 检查CUDA版本是否与驱动兼容
  • 重启系统后再尝试

3. CUDA安装后无法识别

解决方案:

  • 检查环境变量是否正确设置
  • 确认CUDA版本与驱动版本兼容
  • 检查PATH和LD_LIBRARY_PATH是否包含CUDA路径

总结

通过以上步骤,您应该能够完全解决NVIDIA版本与NVML版本冲突的问题,并成功安装NVIDIA驱动、CUDA和NCCL。关键是要彻底卸载旧版本,然后安装兼容的新版本,并正确配置环境变量。如遇到问题,可参考常见问题部分或查阅NVIDIA官方文档。

  • Title: NVIDIA版本与NVML版本冲突解决方案
  • Author: 清夏晚风
  • Created at : 2025-11-06 00:00:00
  • Updated at : 2026-01-13 16:48:23
  • Link: https://blog.kimikkorow.eu.org/NVIDIA相关/NVIDIA版本与NVML版本冲突解决方案/
  • License: This work is licensed under CC BY-NC-SA 4.0.