Service
GitHub - Zagitta/gpu-unlock: Unlock FP/BF16 instruction issue rate on Nvidia 3000's cards to their professional equivalents
zagitta
2026.10.25
·GitHub·by igor#BF16#FP16#GPU#Linux Kernel#Nvidia
Key Points
- 1The `gpu-unlock` kernel module enables users to bypass artificial performance limitations on Nvidia 3000-series graphics cards, effectively doubling their FP/BF16 instruction issue rates.
- 2By applying professional-grade speed settings during the early boot process before the proprietary Nvidia driver initializes, the tool optimizes compute performance without requiring permanent firmware or driver patches.
- 3Users can achieve significant speedups in matrix-heavy tasks like LLM prefill and FlashAttention, with reported gains of up to 80% on supported GA102, GA104, and GA106 chipsets.
The gpu-unlock repository provides a Linux kernel module designed to lift performance restrictions on NVIDIA GeForce 30-series (Ampere architecture) graphics cards, specifically unlocking the full FP/BF16 instruction issue rate to match their professional-grade equivalents (e.g., NVIDIA CMP series).
Core Methodology
The software operates by executing an "unlock" sequence prior to the binding of the official NVIDIA proprietary driver. It utilizes a combination of the V67/PLM technique (previously associated with CMP unlockers) and pre-driver timing mechanisms.The technical process involves:
- Firmware Injection: The module writes specific speed selectors (SS) to the GPU’s registers:
- SS0 (
0x88888888): Enables the full BF16 throughput. - SS1 (
0x8): Configures the IMLA4 (Instruction Matrix Load Architecture) parameter.
- SS0 (
- Initialization Sequence: The module performs a Function Level Reset (FLR) on the target GPU while the hardware is still in an uninitialized state. By executing this logic within the initramfs phase, it ensures the modifications are applied before the
nvidiakernel module interacts with the hardware. - Persistence: To maintain the unlock across power states, the module includes suspend/resume notifiers. Upon resuming from Suspend to RAM, the module re-executes the unlock sequence before the driver re-initializes the device.
Performance Impact
The primary effect is a significant increase in throughput for compute-intensive tasks, particularly those utilizing dense GEMM (General Matrix Multiply) operations. Representative benchmarks for GA102-based cards (such as the RTX 3090 Ti) demonstrate substantial gains:- BF16 Performance: Can see improvements exceeding 80% (e.g., reaching up to TFLOPS).
- FP16/TF32 Performance: Marked increases in throughput, with TF32 operations showing gains from roughly TFLOPS to TFLOPS.
Technical Implementation and Constraints
- Targeting: The module supports GA102, GA103, GA104, and GA106 chips. Users opt-in via kernel command line parameters (e.g., or specific PCI IDs).
- Compatibility: It is compatible with multi-GPU setups, including those passed through to Virtual Machines (vfio-pci). It does not require patching the proprietary NVIDIA driver binaries, ensuring compatibility across different driver versions.
- Limitations: The unlock does not improve memory-bandwidth-bound tasks, such as LLM decoding or INT8 workloads. The total performance gain is heavily influenced by the GPU's power limit (TDP), with lower-wattage cards exhibiting more modest improvements.