当前位置: 首页 > news >正文

Ubuntu-8卡H20服务器升级nvidia驱动+cuda版本

Ubuntu-8*H20服务器升级nvidia驱动+cuda版本

契机

看到qwen3-vl-30b开源了,想测试下性能+资源占用,奈何部署sglang需要12.7版本的cuda?我目前手里的H20的服务器cuda版本最高只支持12.2所以需要升级驱动以及cuda版本,随使用官方.run还有apt install xx进行升级。之前用的火山官方ubuntu镜像,默认驱动535,后升级驱动550,570,580后,cuda也对应升级后,cuda都无法使用无论是在conda中,还是直接在宿主机上测试,最后发现是nvidia-fabricmanager问题,NVIDIA-Fabric—Manager主要用于支持多GPU之间的高速通信(如NVLink),遂记录下升级历程。

关联

  • 显卡8*H20的Ubuntu服务器在cuda不可用
  • 升级nvidia驱动580失败
  • Detected GPU count: 0,No GPU detected!
  • 驱动的 GPU 访问库(libcuda.so)未被 CUDA 程序正确识别
  • cuInit 失败:system not yet initialized

服务器初始配置

火山服务器镜像:Ubuntu22.04 with GPU Driver 535.230.02
如果是新的服务器的话推荐安装Ubuntu 22.04,不带gpu版本,免去卸载之前相关驱动

#查看驱动版本
nvidia-smiNVIDIA-SMI 535.161.08 Driver Version: 535.161.08  CUDA Version: 12.2  #查看当前cuda版本
nvcc -Vnvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:16:06_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0

升级/安装

卸载之前

#卸载之前的
sudo apt purge nvidia-* cuda-* cuda-toolkit-* -y
sudo apt autoremove -y && sudo apt autoclean -y
sudo rm -rf /usr/local/cuda*  # 删除 CUDA 残留目录
sudo rm -rf /var/lib/nvidia* /etc/X11/xorg.conf.d/10-nvidia.conf

选择驱动

  • 多显卡服务器一定要先选择fabricmanager,找到合适的fabricmanager,再去找对应版本驱动
  • ubuntu2204对应fabricmanager+驱动查询网址:https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64/
  • 截止25年10月16日,最新为cuda-drivers-fabricmanager_575.57.08-1_amd64.deb
  • 对应去选择相应的驱动:cuda-drivers_575.57.08-0ubuntu1_amd64.deb
  • 截止当前虽然nvidia线上发行版本为580,由于fabricmanager版本限制,不考虑源码编译安装等情况,还是最高只能安装575版本的驱动
  • 官方网站驱动下载(可忽略,用作保底下载):https://developer.nvidia.com/cuda-toolkit-archive

请添加图片描述

安装驱动

#下载deb格式的安装包
wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64/cuda-drivers-fabricmanager-575_575.57.08-1_amd64.deb
wget https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2204/x86_64/cuda-drivers-575_575.57.08-0ubuntu1_amd64.deb#安装基础依赖:更新系统包索引+安装依赖(gcc编译器、内核头文件、dkms动态内核模块)
sudo apt update
sudo apt install -y gcc g++ make dkms linux-headers-$(uname -r)#添加NVIDIA-CUDA官方仓库
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
echo "deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /" | sudo tee /etc/apt/sources.list.d/cuda.list
sudo apt update#apt安装驱动
sudo apt install -y ./cuda-drivers-575_575.57.08-0ubuntu1_amd64.deb
sudo apt install -y ./cuda-drivers-fabricmanager-575_575.57.08-1_amd64.deb#安装完成后必须重启
sudo reboot

安装cuda

#验证驱动
nvidia-smi#fabricmanager:验证+启动+升级开机启动
sudo systemctl status nvidia-fabricmanager
sudo systemctl start nvidia-fabricmanager
sudo systemctl enable nvidia-fabricmanager#安装cuda12.9
sudo apt-get -y install cuda-toolkit-12-9#验证cuda是否成功安装
ll /usr/local/ | grep cuda# 追加cuda到环境变量到 .bashrc
echo -e "\nexport PATH=/usr/local/cuda-12.9/bin:\$PATH" >> ~/.bashrc
echo -e "export LD_LIBRARY_PATH=/usr/local/cuda-12.9/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc#验证nvcc
nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Tue_May_27_02:21:03_PDT_2025
Cuda compilation tools, release 12.9, V12.9.86
Build cuda_12.9.r12.9/compiler.36037853_0

测试cuda程序

#新建一个cuda验证程序如下
vim test_cuda.cu#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include <stdio.h>
#include <cuda.h>
#include <cuda_runtime.h>int main() {// 直接初始化,环境变量在外部设置CUresult cu_err = cuInit(0);const char* cu_err_msg;cuGetErrorString(cu_err, &cu_err_msg);if (cu_err != CUDA_SUCCESS) {printf("cuInit 失败:%s\n", cu_err_msg);return 1;}printf("✅ cuInit 成功!驱动已就绪\n");// 后续步骤保持不变cudaError_t rt_err = cudaDeviceReset();if (rt_err != cudaSuccess) {printf("cudaDeviceReset 失败:%s\n", cudaGetErrorString(rt_err));return 1;}rt_err = cudaSetDevice(0);if (rt_err != cudaSuccess) {printf("cudaSetDevice(0) 失败:%s\n", cudaGetErrorString(rt_err));return 1;}printf("✅ cudaSetDevice(0) 成功!运行时已绑定设备\n");int device_count;rt_err = cudaGetDeviceCount(&device_count);if (rt_err != cudaSuccess) {printf("❌ cudaGetDeviceCount 失败:%s\n", cudaGetErrorString(rt_err));return 1;}printf("🎉 最终检测到 %d 个CUDA GPU!\n", device_count);return 0;
}
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#编译运行
nvcc test_cuda.cu -o test_cuda -lcuda 
./test_cuda#最终输出代表成功
✅ cuInit 成功!驱动已就绪
✅ cudaSetDevice(0) 成功!运行时已绑定设备
🎉 最终检测到 8 个CUDA GPU!

conda环境测试

#新建conda环境
conda create --name cuda_test python=3.10#安装torch,自动匹配12.1cuda运行环境,系统cuda12.9向下兼容12.1
pip3 install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url #执行测试脚本
python -c "
import torch
print('1. PyTorch 版本:', torch.__version__)
print('2. CUDA 可用:', torch.cuda.is_available())  # 需显示 True
print('3. PyTorch 绑定的 CUDA 版本:', torch.version.cuda)  # 需显示 12.1
print('4. GPU 数量:', torch.cuda.device_count())  # 需显示 8(你的 H20 数量)
if torch.cuda.is_available():print('5. 第1块 GPU 名称:', torch.cuda.get_device_name(0))  # 需显示 NVIDIA H20
else:print('5. CUDA不可用')  
"#最终输出以下代表成功
1. PyTorch 版本: 2.3.1+cu121
2. CUDA 可用: True
3. PyTorch 绑定的 CUDA 版本: 12.1
4. GPU 数量: 8
5. 第1块 GPU 名称: NVIDIA H20

总结

  • CUDA12.9可向下兼容PyTorch依赖的CUDA12.1,无需额外安装低版本CUDA
  • 多GPU场景下,fabricmanager版本决定驱动最高版本,必须匹配!

写到最后

请添加图片描述

http://www.dtcms.com/a/490110.html

相关文章:

  • 2.6 代码注释与编码规
  • html css js网页制作成品——饮料官网html+css+js 4页网页设计(4页)附源码
  • Langchain流式自定义生成器函数
  • 基于单片机的智能收银机模拟系统设计
  • ssh连接本地虚拟机
  • PyInstaller多模块项目打包指南
  • access 网站后台汕头自助建站
  • 从图纸到三维模型:智能装配指导的突破之路
  • 「JMM+Java锁+AQS」 知识图谱
  • 【广州公共资源交易-注册安全分析报告-无验证方式导致安全隐患】
  • C++ 学习日记
  • 晶晨S905L3SB芯片_安卓9.0_高安版_支持外置WIFI_线刷固件包
  • 4G5G 移动代理实战:什么时候必须用移动 IP?
  • 【OpenHarmony】传感器轻量级服务模块架构
  • 面向服务架构(SOA)模式全解析:设计、实践与价值
  • HTML 零基础入门到实战:从骨架到页面的完整指南
  • 【Java EE进阶 --- SpringBoot】Mybatis操作数据库(进阶)
  • 成都海鸥手表网站crm系统的销售管理功能包括
  • 『 QT 』QT信号机制深度解析
  • stp,rstp,mstp的区别
  • 海外盲盒APP开发:从“未知”到“精准”的用户体验革命
  • 网站建设yuanmus站长工具seo综合查询5g
  • 使用 IntelliJ IDEA 结合 DBeaver 连接 MySQL 数据库并实现数据增删查改的详细步骤:
  • 零知IDE——基于STM32F407VET6和ESP-01的SHT2X温湿度监测与云传输系统
  • 记一次生产服务器磁盘I/O性能瓶颈与负载过高分析与处理
  • MEMS加速度计深度解析:从智能手机到结构健康监测
  • LLMs-from-scratch(dataloader)
  • 兴义哪有做网站婚纱影楼网站源码
  • C++_394_tableWidget控件,两种模式,1、行显示模式 2、网格显示模式
  • MyBatis拦截器实现saas租户同库同表数据隔离