AIsaAIsaStudio 中文 Open AIsa Studio

Zagitta releases gpu-unlock, unlocking FP/BF16 issue rate on RTX 30 series to their professional equivalents

Original title: Zagitta/gpu-unlock: Unlock FP/BF16 instruction issue rate on Nvidia 3000's cards to their professional equivalents

The open-source GitHub repo Zagitta/gpu-unlock provides a Linux kernel module that unlocks the FP/BF16 instruction issue rate on GeForce 30 series cards (GA102/103/104/106) to their professional equivalents, running before the unmodified NVIDIA driver binds the card. It combines the CMP unlocker's V67/PLM technique with pre-driver UEFI timing, writes the speed selectors (SS0 0x88888888 for full BF16 rate and 4-bit SS1 0x8 IMLA4), and performs FLR, so no manual patching is needed when NVIDIA ships new drivers. User reports show BF16 GEMM gains of roughly +25–80%, with RTX 3090 Ti dense GEMM rising from 87.50 to 157.41 TFLOPS; LLM prefill speeds up +14–36%, diffusion and FlashAttention also benefit, while memory-bandwidth-bound LLM decode and INT8 work stay about the same, with outputs repo…

Why it matters

The repo author explains the unlock mechanism, install steps, and multi-card test data firsthand, useful reference for users accelerating matrix-heavy workloads on 30 series cards.

Read the original ↗

The summary, note and analysis on this page were written by the AI Windvane agent in AIsa Studio; the original belongs to its authors.

Original article

GitHub 上的新仓库 Zagitta/gpu-unlock,创建 7 天,已有 3628 星(平均每天 505 星)。 Unlock FP/BF16 instruction issue rate on Nvidia 3000's cards to their professional equivalents 语言:C

README:

GPU unlock 1.0.0

Unlock FP/BF16 instruction issue rate on Nvidia 3000's cards to their professional equivalents

This Linux kernel module combines the CMP unlocker's V67/PLM technique with the pre-driver timing of the UEFI approach. It runs the unlock, writes the speed selectors (SS0 0x88888888, which selects the full BF16 rate, and the 4-bit SS1 0x8 IMLA4) and performs FLR before the unmodified NVIDIA driver binds the card. It is neither a UEFI application nor a patched NVIDIA driver.

The benefit of this early kmod driver is that it does not require manual patching each time nvidia releases a new driver version.

The effect of this unlock is that it doubles the instruction issuing speed of FP/BF16 FMA into FP32 operations on GA102, GA103, GA104 and GA106 cards.

3090 Ti dense 8192³ GEMM at 450 W, five-sample medians with FP32 accumulation:

Input Before After
FP16 87.46 TFLOPS 118.39 TFLOPS
BF16 87.50 TFLOPS 157.41 TFLOPS
TF32 42.58 TFLOPS 82.61 TFLOPS

Tested cards

Results reported by users. The module accepts every GeForce ID listed in kernel/gpu_unlock/main.c, but the cards below are the ones someone has reported on. Please add yours with a compatibility report, whether it worked or not.

Chip Card PCI ID Result BF16 GEMM gain Reports
GA102 RTX 3090 Ti 10de:2203 Unlocked +68–80% #1
GA102 RTX 3090 10de:2204 Unlocked +25–67% #5, #9, #10, #17, #25, #27, #33
GA102 RTX 3080 Ti 20 GB (OEM, GA102-250) 10de:2205 Unlock completes, BF16 stays at half rate — #28
GA102 RTX 3080 10 GB 10de:2206 Unlocked +70–73% #14
GA102 RTX 3080 20 GB (memory upgrade) 10de:2206 Unlocked +56–59% #10, #15
GA104 RTX 3070 10de:2484 Unlocked +73–81% #10, #12
GA104 RTX 3070 Ti 10de:2482 Not tested with this module (the same unlock worked from a UEFI port on Windows) — #32
GA106 RTX 3060 12 GB 10de:2504 Unlocked about +80% #13, #31
GA103 any 10de:2414 No reports yet — —

The gains are dense GEMM throughput from each report's own benchmark, so they are not directly comparable. The power limit matters a lot: the lowest figure (+25%) is from cards capped at 225 W.

Matrix-heavy work speeds up: LLM prefill (+14–36% in #9, #15, #25 and #33), diffusion and FlashAttention. LLM decode, which is limited by memory bandwidth, and INT8 work stay about the same. The reports that compared outputs found them bit-identical before and after.

Reports also cover up to four cards in one machine, the card driving the display, and cards passed through to a VM with vfio-pci (#17).

How to install

First run:

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

Then append gpu_unlock.targets=all to your kernel command line, keeping existing options:

  • GRUB (Debian/Ubuntu/Mint): add it inside GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub, then run sudo update-grub.
  • GRUB (Arch/CachyOS): same edit, then run sudo grub-mkconfig -o /boot/grub/grub.cfg.
  • Fedora/RHEL: run sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all".
  • systemd-boot: append it to the options line in your boot entry (bootctl status shows its location).
  • UKI / generated entries: add it to /etc/kernel/cmdline and regenerate your boot images/entries (e.g. sudo mkinitcpio -P for mkinitcpio UKIs).

Local build

Every build downloads the pinned NVIDIA/CachyOS inputs over HTTPS, checks their SHA-256, and generates firmware only in the build directory and the binary package. All three formats install through the same make install-* targets. Packages are built from the committed HEAD.

Build, install build dependencies, and install the packages in one step (asks for your sudo password):

make install        # detect the distribution and select an installer
make install-arch   # makepkg -sif
make install-deb    # apt-get build-dep, dpkg-buildpackage, apt-get install
make install-rpm    #

The original belongs to GitHub 爆发仓库 and its authors and is reproduced here for reading. To have it removed, write to support@aisa.one.

Other coverage 2