
Description
You bought a 3090 for model work and your FP16 matrix multiplies only get half the instruction issue rate. The same GA102 runs at full speed on the professional boards, and GeForce firmware holds it back. Getting it back used to mean a patched driver or a UEFI app, and every NVIDIA driver update meant doing it again.
gpu-unlock is a Linux kernel module that writes the full-rate speed selectors before the stock NVIDIA driver loads, does a PCIe function level reset, and lets the unmodified driver take over. On a 3090 Ti the author measured BF16 GEMM going from 87.5 to 157.4 TFLOPS, with FP16 and TF32 improving too. No driver patching, nothing to redo after an update.
It does nothing unless you opt in on the kernel command line with gpu_unlock.targets, either for specific cards or for all of them. Matrix-heavy work such as LLM prefill, diffusion and FlashAttention benefits, while bandwidth-bound decode and INT8 stay about the same.
Unlocks before the driver: Writes the speed selectors and resets the card before nvidia binds it, so the stock driver stays untouched and driver updates need no new patch.
GA102 through GA106: Covers GA102, GA103, GA104 and GA106. Users report success on the 3090 Ti, 3090, 3080, 3070 and 3060 12 GB, with gains from about 25% to 80% depending mostly on the power limit.
Pick your cards: Use gpu_unlock.targets=all or full PCI addresses. A multi-card box is done in about a second, and the card driving your display works too.
Packages for three families: make install detects Arch, Debian/Ubuntu or Fedora/RHEL, builds a package and adds the module to the initramfs. Firmware is generated locally from hash-pinned NVIDIA inputs.
Compatibility table: The repo keeps a user-reported card table. An OEM 3080 Ti 20 GB, for one, completes the unlock but stays at half rate, so check it before you try.
gpu-unlock is a Linux kernel module that writes the full-rate speed selectors before the stock NVIDIA driver loads, does a PCIe function level reset, and lets the unmodified driver take over. On a 3090 Ti the author measured BF16 GEMM going from 87.5 to 157.4 TFLOPS, with FP16 and TF32 improving too. No driver patching, nothing to redo after an update.
It does nothing unless you opt in on the kernel command line with gpu_unlock.targets, either for specific cards or for all of them. Matrix-heavy work such as LLM prefill, diffusion and FlashAttention benefits, while bandwidth-bound decode and INT8 stay about the same.
Features
Unlocks before the driver: Writes the speed selectors and resets the card before nvidia binds it, so the stock driver stays untouched and driver updates need no new patch.
GA102 through GA106: Covers GA102, GA103, GA104 and GA106. Users report success on the 3090 Ti, 3090, 3080, 3070 and 3060 12 GB, with gains from about 25% to 80% depending mostly on the power limit.
Pick your cards: Use gpu_unlock.targets=all or full PCI addresses. A multi-card box is done in about a second, and the card driving your display works too.
Packages for three families: make install detects Arch, Debian/Ubuntu or Fedora/RHEL, builds a package and adds the module to the initramfs. Firmware is generated locally from hash-pinned NVIDIA inputs.
Compatibility table: The repo keeps a user-reported card table. An OEM 3080 Ti 20 GB, for one, completes the unlock but stays at half rate, so check it before you try.
