Unlocking BF16 performance on Nvidia RTX 30-series GPUs with a Linux kernel module
A new open-source Linux kernel module unlocks full BF16 and FP16 instruction rates on consumer Nvidia RTX 30-series cards, offering significant throughput gains for local LLM inference.
An open-source Linux kernel module named gpu-unlock now enables consumer-grade Nvidia RTX 30-series graphics cards to operate at their professional-level floating-point instruction rates. Released in late October 2026 by developer Zagitta, this tool modifies how the operating system initializes specific GPU architectures before the official Nvidia driver takes control. The project targets engineers and researchers running local large language models who seek higher computational throughput without upgrading hardware.
What happened
The gpu-unlock project combines techniques from previous CMP unlockers with early-stage initialization methods typically reserved for UEFI applications. Instead of patching the proprietary Nvidia driver or requiring complex firmware modifications that break with every driver update, this solution operates as a standalone kernel module. It intercepts the GPU initialization process within the Linux initramfs, applying specific speed selectors to the hardware registers before the standard Nvidia driver binds to the card. This approach ensures compatibility with unmodified, official Nvidia drivers across updates.
User reports indicate substantial performance improvements for matrix-heavy workloads, which are central to modern AI inference tasks. On an RTX 3090 Ti, dense general matrix multiplication (GEMM) benchmarks showed BF16 throughput jumping from 87.50 TFLOPS to 157.41 TFLOPS. Similar gains were observed across the RTX 3080, 3090, 3070, and 3060 models, with BF16 GEMM gains ranging from roughly 25% to over 80%, depending on power limits and specific chip variants. The module specifically targets GA102, GA103, GA104, and GA106 chip architectures found in these consumer cards.
The performance boost is not uniform across all AI operations. While LLM prefill phases, diffusion models, and FlashAttention implementations see speedups between 14% and 36%, LLM decode phases remain largely unchanged because they are bounded by memory bandwidth rather than compute throughput. INT8 workloads also show no significant improvement. Crucially, users who compared model outputs before and after unlocking reported bit-identical results, confirming that the performance gain comes from utilizing previously restricted hardware capabilities rather than approximating calculations.
How it works
The core mechanism involves writing specific values to the GPU's speed selector registers during the brief window between system boot and driver loading. The module writes 0x88888888 to the SS0 register, which selects the full BF16 rate, and 0x8 to the 4-bit SS1 register for IMLA4. It then performs a Function Level Reset (FLR) to apply these settings. By executing this sequence in the initramfs stage, the module ensures the hardware is configured before the proprietary Nvidia driver initializes its own state. This timing is critical because once the driver binds to the device, these low-level registers are typically locked or managed exclusively by the vendor software.
Installation requires adding the module to the Linux kernel command line and rebuilding the initramfs images. The tool supports major distributions including Arch, Debian, Ubuntu, Fedora, and RHEL through automated build scripts that handle dependency resolution and package creation. Users must explicitly opt-in by specifying target PCI addresses or using the all flag in the kernel parameters. The module includes safety checks to skip cards that are already bound to other drivers or powered down, and it handles suspend-to-RAM cycles by re-applying the unlock upon resume if the card loses power.
Key details
- Supported Hardware: GeForce RTX 3090 Ti, 3090, 3080 (10GB/20GB), 3070, and 3060 (12GB) based on GA102, GA104, and GA106 chips.
- Performance Gain: BF16 GEMM throughput increases by 25–80%, with LLM prefill speeds improving by 14–36%.
- Driver Compatibility: Works with unmodified official Nvidia drivers; no driver patching required.
- Installation Method: Linux kernel module loaded via initramfs before the Nvidia driver binds.
- Safety: Outputs remain bit-identical; module skips already-bound or unsupported cards automatically.
- Limitations: No performance gain for LLM decode (memory-bound) or INT8 workloads; hibernation is not supported.
Why it matters
For developers building and running local AI models, hardware cost is a primary constraint. Consumer GPUs offer significantly better price-to-performance ratios than professional data center cards, but manufacturers often artificially limit certain precision modes to segment the market. This module effectively removes those artificial barriers for Linux users, allowing hobbyists and small teams to squeeze more value out of existing hardware. The ability to double BF16 throughput on an RTX 3090 brings its computational capability closer to that of much more expensive professional equivalents for specific training and inference tasks.
The technical approach also sets a precedent for how community-driven tools can interact with closed-source drivers. By operating at the kernel level before the vendor driver loads, the module avoids the legal and maintenance headaches associated with reverse-engineering or patching proprietary binaries. This means users can benefit from the latest driver security patches and features without waiting for a community patch to catch up. It demonstrates a sustainable path for hardware enthusiasts to maximize utility while maintaining system stability and supportability.
What you can do
- Verify your GPU model matches the supported GA102, GA103, GA104, or GA106 architectures listed in the project documentation.
- Clone the repository and run
make installto build and install the module on your Linux distribution. - Add
gpu_unlock.targets=allto your kernel command line configuration file (e.g.,/etc/default/grub). - Rebuild your initramfs using the appropriate command for your distro (e.g.,
sudo update-gruborsudo mkinitcpio -P). - Reboot your system and check
journalctl -k -b | grep gpu_unlockto confirm the unlock was applied successfully. - Benchmark your specific LLM or AI workload to measure real-world improvements in prefill and training times.



