英伟达GPU解锁隐藏算力:RTX 4090吞吐翻倍,多款老卡跟涨
老显卡还能榨出多少算力?
硬件没动,驱动没换,一张RTX 4090的特定Tensor Core运算吞吐率却从165.6 TFLOPS拉到331.6 TFLOPS,整整翻了一倍。
而且被挖出余量的卡不止这一张。RTX 3090 Ti、RTX 4070 Ti SUPER,连2018年出的RTX 2080 Ti,在社区测试里都跑出了明显的性能涨幅。事情的起点在GitHub:一批开发者盯上了英伟达GPU底层的计算限制。

他们发现,部分GeForce显卡的Tensor Core在跑特定混合精度运算时,指令发射速率被卡了一道。只要在GPU启动阶段改掉相关配置,原先受限的运算路径就能恢复更高的吞吐率。
不用换卡,不用刷显卡BIOS;在已经验证过的Linux方案里,原版NVIDIA驱动照常运行。眼下GitHub上针对RTX 20、30、40三代显卡的项目都已经出现,还有开发者在Windows 11环境里把实验做完了。开源社区这场围绕英伟达显卡「隐藏算力」的挖掘,已经铺开。

RTX 4090算力翻倍
最抓眼球的结果出自RTX 4090。开发者JustAResearcher在开源项目gpu-unlock-ada里放出了这张卡解锁前后的测试数据。项目上线仅2天,Star量就攒到了2.7k。

项目地址:https://github.com/JustAResearcher/gpu-unlock-ada
看具体数字:FP16输入、FP32累加的Tensor Core运算,吞吐率由165.6 TFLOPS升到331.6 TFLOPS,差不多翻倍;BF16输入、FP32累加也一样,从165.5 TFLOPS变成330.6 TFLOPS。也就是说,同一张RTX 4090在特定混合精度运算下能跑到此前约两倍的指令吞吐率。为排除偶然,开发者把测试循环从2万次加到4万次,FP16/FP32和BF16/FP32分别测得330.8 TFLOPS和330.3 TFLOPS,跟之前基本对得上。


整个实验没换显卡硬件,也没靠拉高功耗上限、手动超频或者改NVIDIA官方驱动来换性能。技术报告显示,测试卡用的是AD102芯片,128个SM,跑Linux 7.2.4内核,功耗上限守在450W。开发者借GPU启动阶段的固件执行流程拿到受保护寄存器的写入权限,再改控制计算速率的寄存器配置。
配置改完后,显卡做了一次PCIe功能级重置(FLR),接着由未经修改的NVIDIA 615.78.08驱动正常接管。驱动初始化和CUDA测试之后的寄存器检查显示,解锁配置仍然生效。RTX 4090在部分Tensor Core运算模式下的速率限制就这样被解除,原有计算单元执行FP16/BF16输入、FP32累加指令时能跑到更高吞吐率。
不过性能变化没有铺到所有运算类型。FP16输入、FP16累加在解锁前就到325.7 TFLOPS,解锁后经较长循环测试为331.6 TFLOPS,并没有类似翻倍。INT8运算吞吐率基本停在661 TOPS左右,普通FP32标量运算也维持在约79.1 TFLOPS。可见这次解锁主要动的是此前受速率限制的特定Tensor Core运算路径,RTX 4090的全部算力并没有一起翻倍。
另一位RTX 4090持有者用经过审查的项目代码独立复测了一遍。实验环境是Linux 7.2.11-arch1-1内核加NVIDIA 615.78.08驱动,解锁前后同一张卡、同一套测试程序、同样450W功耗上限,结果得到进一步验证:FP16输入、FP32累加的指令吞吐率从160.4 TFLOPS升到320.4 TFLOPS,BF16输入、FP32累加从159.7 TFLOPS升到320.2 TFLOPS,两项都接近翻倍。

复测地址:https://github.com/JustAResearcher/gpu-unlock-ada/blob/main/docs/evidence/rtx4090-pr1-matched/README.md
可测试从底层指令吞吐率转到实际矩阵乘法,涨幅就没这么夸张了。cuBLAS矩阵乘法测试里,FP16吞吐率随矩阵规模不同提升约12%至34%,其中4096×4096矩阵乘法从153.2 TFLOPS升到206.0 TFLOPS,增幅约34.4%。BF16的差异更大:1024×1024和8192×8192规模分别提升约19.6%和16.0%,4096×4096这一档性能基本没动。差异跟实际计算任务的执行方式有关——底层指令吞吐率测试尽量压掉了内存访问等因素,真实矩阵乘法还要算上数据搬运、计算调度和不同规模下的运算效率。所以,RTX 4090特定Tensor Core指令吞吐率翻倍已有独立复测支持,但这不等于实际AI训练或推理速度也能翻倍。

RTX 30系列同样算力暴涨
RTX 30系列也传来好消息。开发者Zagitta的开源项目gpu-unlock已在多款RTX 30系列显卡上跑通。其中RTX 3090 Ti表现相当亮眼:450W功率上限下,BF16矩阵运算吞吐率从87.5 TFLOPS升到157.4 TFLOPS,涨幅接近80%;TF32的提升更达到94%,几乎翻倍。
RTX 3080、3070 与 3060 也先后有解锁成功的消息传出。RTX 3080 10GB 的 BF16 吞吐率由 65.4 TFLOPS 升至 113.4 TFLOPS,涨幅约 73%;RTX 3070 和 RTX 3060 的对应测试则分别拿到约 81% 和 76% 的提升。

项目地址:https://github.com/Zagitta/gpu-unlock
这套做法和此前 RTX 4090 的解锁思路相近:gpu-unlock 同样盯着 GPU 启动阶段的固件执行流程,改动的是控制 Tensor Core 指令发射速率的寄存器配置。NVIDIA GPU 内部本来就有管着不同指令执行速率的寄存器,SS0 和 SS1 就在其中,它们受权限保护,普通驱动碰不了。
Zagitta 借用了早前 CMP 显卡解锁项目里的 V67 技术,钻的是 GPU 安全启动固件中的漏洞,通过返回导向编程(ROP)改写权限级别掩码(PLM),由此拿到相关寄存器的写入权限。接下来,程序把 SS0 设成 0*88888888,SS1 设成 0*8,对应的运算路径就切到了更高的指令发射速率。
和改驱动不同,Zagitta 把整个解锁流程做进了 Linux 内核模块。系统启动时,这个模块抢在 NVIDIA 官方驱动接管显卡之前跑完,把寄存器配置改好,再借 PCIe 功能级重置(FLR)让配置生效;之后未经修改的 NVIDIA 驱动照常加载。按这套方案,部分 Ampere 架构显卡在执行 FP16/BF16 输入、FP32 累加指令时,指令发射速率能达到原来的两倍。
技术传开之后,提交独立测试结果的显卡用户越来越多。
一名用 RTX 3080 10GB 的开发者把功率上限设在 320W 又测了一轮。BF16 吞吐率涨了约 73% 之外,FP16 输入、FP32 累加的矩阵运算吞吐率也从 64.88 TFLOPS 升到 110.14 TFLOPS,增幅约 70%。

在持续 120 秒的 FP16/BF16 交替矩阵运算测试里,这张卡完成的计算次数由 6940 次增至 11860 次,平均吞吐率提升约 71%。两轮测试功耗都维持在约 318W,峰值温度分别是 78℃ 和 79℃。

计算结果的正误也做了核对:FP16、BF16 和 TF32 矩阵运算中,解锁前后的输出完全一致。但提升并非所有任务都能拿到。原本就跑得较快的 FP16 输入、FP16 累加运算,吞吐率基本停在 112 TFLOPS 左右;INT8 运算和普通 FP32 运算也几乎没变。
矩阵运算之外,一些实际 AI 任务同样提速了。有 RTX 3090 用户用 vLLM 跑 27B BF16 大模型,提示词预填充速度提升约 33%,首个 Token 的响应时间缩短约 24%;另一位开发者用两张显存扩容版 RTX 3080 做大模型预填充测试,也拿到约 33% 至 36% 的性能提升。RTX 3080 测试报告:https://github.com/Zagitta/gpu-unlock/issues/15?

不过两组实验里,逐 Token 生成速度都没有明显变化。原因在于大模型预填充阶段要做大量矩阵计算,而逐 Token 生成更多卡在显存带宽上。
从寄存器层面的改动到真实 AI 工作负载,这次解锁已经在多款 RTX 30 系列显卡上拿到可观的性能收益。同样的思路,也开始被开发者搬到更早的 GPU 架构上。
8 年前的 2080 Ti 也被挖出潜力
RTX 20 系列这边的进展更有意思。2018 年发布的 RTX 2080 Ti 距今已经八年,当年售价上千美元的旗舰卡,如今早就退出了高端 GPU 性能竞争的第一线。可随着 NVIDIA GPU 算力解锁技术传开,这张老卡又被开发者翻出来测试。开发者 nlzy 把 gpu-unlock 的相关技术移植到 NVIDIA Turing 架构,并在 GitHub 上开源了项目 turing-unlock。

项目地址:https://github.com/nlzy/turing-unlock
测试用的是一张 22GB 非标准显存配置的 Dell RTX 2080 Ti。原版 RTX 2080 Ti 只有 11GB 显存,所以这张卡的硬件配置和普通零售版并不相同。在 250W 功耗设置下,开发者用 cuBLAS 做了 FP16 输入、FP32 累加的矩阵乘法测试:矩阵的 M、N、K 三个维度都取 2048 时,吞吐率从解锁前的 55.7 TFLOPS 升到 91.4 TFLOPS,增幅约 64.1%。
其他矩阵规模也有不同程度的提升。1024 规模从 50.3 提升至 68.3 TFLOPS,提升约 35.8%;
4096 规模从 53.7 提升至 81.7 TFLOPS,提升约 52.1%;
8192 规模从 52.8 提升至 77.9 TFLOPS,提升约 47.5%。

拿 NVIDIA 在 Turing 架构白皮书里给出的 RTX 2080 Ti 对应 FP16 Tensor Core 峰值吞吐率 56.9 TFLOPS 作对照:按这个数字算,2048 规模下解锁前的测试结果达到标称峰值的 97.9%,解锁后则达到 160.6%。可见原先的速率配置确实压住了这条计算路径能发挥的吞吐率,调整配置之后,原有 Tensor Core 在相应运算模式下能执行更多计算。

另一名开发者的实验里,也出现了类似的结果。
GitHub 用户 haohervchb 另起了一个 Turing-unlock 项目,拿一张 ASUS RTX 2080 Ti 做实测。这张卡是 TU102 芯片,68 个 SM,显存为标准 11GB。做法和 nlzy 的 Linux 内核模块不同:走的是系统启动前的 UEFI 路线,在操作系统加载之前就把 GPU 的相关配置改掉。
底层 MMA(矩阵乘加)指令测试采用 FP16 输入、FP32 累加,解锁前吞吐率为 46.94 TFLOPS,解锁后升到 93.66 TFLOPS,差不多翻了一倍。按每个 SM、每个时钟周期执行的浮点运算次数算,也从约 511.7 FLOP/SM/clock 提高到 1022.4 FLOP/SM/clock。

项目地址:https://github.com/haohervchb/Turing-unlock
换到实际 cuBLAS 矩阵乘法测试,增幅就收窄了。8192×8192 规模的 GEMM 测试里,吞吐率由 48.15 TFLOPS 升到 85.17 TFLOPS,增幅约 76.9%。没到底层指令测试那种接近两倍的水平,不过对一张八年前发布的显卡来说,这个提升依然相当可观。
两项研究眼下验证的范围都还有限。现有证据只能说明部分 TU102 显卡可以通过修改速率配置,提高特定 Tensor Core 运算的吞吐率。其他 RTX 20 系列型号能不能照搬这套方法,不同驱动、固件版本下兼容性如何,都还要进一步验证。实际 AI 训练、推理和游戏性能能提升多少,也没法直接拿这些测试数据推算。
Windows 11 也有人成功了
上述探索基本集中在 Linux 环境。多个项目陆续开源之后,Windows 平台也冒出了实验性进展。
开发者 TOTORONG 在 Hugging Face 上公开了 AD103_win_unlocker,展示的是 Windows 11 环境下修改 GPU 计算配置的实验。
项目地址:https://huggingface.co/TOTORONG/AD103_win_unlocker/blob/main/docs/INSTALL.en.md
测试用的是一张经过显存扩容、容量达到 32GB 的 RTX 4080,GPU 为 AD103。
这套方案同样不走 Linux 内核模块那条路,而是用 UEFI 程序,在 Windows 启动前完成相关配置修改,再把控制权交还 Windows。
项目公布的测试结果显示,在 4096 规模的矩阵乘法中:
FP16/FP32:91.54 → 182.80 TFLOPS。
BF16/FP32:91.91 → 184.49 TFLOPS。
两项测试的吞吐率都接近翻倍。这说明相关底层配置修改并非只能在 Linux 系统上实现。
但目前的 Windows 11 结果仍来自特定改装显卡,还不能当作普通 RTX 4080 或整个 RTX 40 系列通用兼容的依据。
参考链接:
https://x.com/Pirat_Nation/status/2114297495815704697