Ubuntu 使用 NVFlash 更新 Nvidia 显卡 BIOS
如何给显卡更新升级 BIOS 版本?由于近期组装了一台四卡 V100 SXM2 16G NvLink 的服务器,其中有一张卡的 BIOS 版本与其他三张不同。

nvidia-smi -q | grep "VBIOS Version"

不同 BIOS 版本的有什么影响?
NVLink 通道稳定性
新版本可能改善某些 NVLink 信号在特定主板/电源/散热条件下的不稳定或掉链现象。
功耗/电压/频率调节
BIOS 更新有可能改变 GPU 内部电源调节(Voltage
Regulator/Thermal/Power-Boost 等),以便在更高温度、更差环境下保持稳定。
兼容性改善
列如与特定服务器型号(Dell、Supermicro 等)或某些版本的主板固件(BIOS of the server motherboard)之间的兼容性问题,可能由于插槽、I/O 路径、冷却方式不同导致的启动/识别问题。
散热/热速降行为
BIOS 更新也可能调整热控阈值(Temperature Thermal Throttling behavior),在散热不理想或风扇曲线不合适的时候表现不同。
错误修复
例如某些旧 BIOS 在开启 GPU-监控、长时间满载、或切换频率 (Boost/Throttle) 时可能出现某些 Bug(死机、性能掉落、NVLink 不稳定等),新 BIOS 可能修复这些。
所以一般提议所有 SXM2 GPU 的 VBIOS 版本保持一致,否则在深度学习框架里(如 NCCL、Horovod)进行多 GPU 通信时可能报错或掉速。
但最主要还是自己的强迫症犯了!必须让它们一样!必须!

如何更新显卡的 BIOS 呢?
这就不得不提 NvFlash 这个工具!
1.下载 NVFlash
进入官网,在菜单栏选择 DOWNLOADS 进入页面,然后选择 Nvidia NVFlash,由于是在 Ubuntu 下使用,选择 Linux 版本。
https://www.techpowerup.com/

下载的是压缩包,解压后可以将文件夹重命名为 nvflash,方便后续命令操作,正常会有四个子文件夹,分别为:aarch64、ppc64、x64、x86,一般使用的是 x64 文件夹里的 nvflash 程序,对应 64 位操作系统。

2.下载 BIOS 文件
在菜单栏选择 DATABASES -> VGA BIOS COLLECTION 进入页面,通过搜索就可以找到对应显卡的各种 BIOS 文件,下载后也是压缩包,解压后会得到一个 .rom 的文件,将这个文件移动到上面 nvflash/x64 的文件夹中,方便后续的命令操作。

3.执行更新 BIOS
# 进入文件夹
cd nvflash/x64
# 调整权限
sudo chmod +x ./nvflash
# 查看单个显卡信息,通过查看每个卡的 BIOS 版本,确认 index 的值,查第二张卡,index 值为 1,以此类推。
sudo ./nvflash --index=0 --version
# 备份当前 BIOS 文件
sudo ./nvflash --index=0 --save backup.rom
# 关闭写入保护
sudo ./nvflash --index=0 --protectoff
# 指定 BIOS 文件更新
sudo ./nvflash --index=0 273184.rom
# 查看是否更新成功
sudo ./nvflash --index=0 --version
#开启写入保护
sudo ./nvflash --index=0 --protecton
4.重启系统
再次输入:
nvidia-smi -q | grep "VBIOS Version"
这样看就舒服多了!




