zovo.imzovo.im
首页›开源项目›正文

gpu-unlock:用 Linux 内核模块解开 RTX 30 系显卡的 FP16/BF16 限速,社区实测提升 25%–81%

zovo约 3 分钟读完
gpu-unlock 是 GitHub 用户 Zagitta 在 10 月 18 日公开的项目:一个 GPL-2.0-only 的 Linux 内核模块,在原版 NVIDIA 驱动绑定显卡之前,改写 RTX 30 系显卡上锁死的速度选择器寄存器,让带 FP32 累加的 FP16/BF16 矩阵运算接近专业卡的速率。10 月 24 日它登上 GitHub Trending。

01它解决什么问题

按项目说明,GeForce RTX 30 系(GA102、GA103、GA104、GA106 芯片)的 FP16/BF16 张量运算在带 FP32 累加时,被固件限制在专业卡速率的一半左右,而硬件本身相同,差别在速度选择器寄存器。项目沿用早期 CMP 矿卡解锁的思路,把解锁时机放到驱动加载之前。它既不是 UEFI 程序,也不是打补丁的 NVIDIA 驱动,所以 NVIDIA 出新驱动时不必重新打补丁。

02提升有多大

以下数字均为项目 README 的自述或用户在 GitHub issue 里提交的报告,本站未实测,各人的功耗上限和测试方法不同,不能直接横向比较。

卡型输入类型解锁前解锁后
RTX 3090 Ti(450 W,8192³ GEMM)FP1687.46 TFLOPS118.39 TFLOPS
RTX 3090 Ti(同上)BF1687.50 TFLOPS157.41 TFLOPS
RTX 3090 Ti(同上)TF3242.58 TFLOPS82.61 TFLOPS

README 汇总的用户报告显示,BF16 矩阵乘法的提升在 +25% 到 +81% 之间,功耗被限制在 225 W 的卡提升最低。大模型推理中,受计算限制的 prefill 阶段有 14%–36% 的提升,扩散模型和 FlashAttention 也受益;受显存带宽限制的解码和 INT8 基本不变。有报告称解锁前后输出逐位一致。

03使用条件与风险

  • 仅限 Linux;需要自行编译安装内核模块,并在内核启动参数加入 gpu_unlock.targets=all(或指定 PCI 地址)。
  • 模块未签名,需关闭 Secure Boot,内核会被标记为 tainted。
  • 显示卡在解锁复位期间会黑屏,直到 nvidia-drm 接管。
  • 挂起恢复后会自动重新解锁;休眠(hibernate)不在支持范围内。
  • README 列出的测试中,RTX 3080 Ti 20GB(OEM)解锁完成但 BF16 仍是半速,GA103 暂无报告。
  • 它修改显卡底层寄存器,属于非官方做法,出问题 NVIDIA 不会提供支持;使用前请自行评估风险。

04怎么装

sh
git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make install

以上命令摘自项目 README,本站未实际运行。装完后按发行版(GRUB、systemd-boot 等)把 gpu_unlock.targets=all 加进内核参数并重启,再用 journalctl -k -b | grep gpu_unlock 查看是否显示 unlocked。想停用,删掉该参数即可。

许可方面:内核模块和打包脚本为 GPL-2.0-only,生成的固件载荷源自 CMP 参考实现,NVIDIA 固件仍适用其自身条款。

标签:
本文由 zovo 编辑撰写,转载请注明出处。

相关文章