the short version
- On an RTX 3090 Ti at 450 W, the module raises dense 8192-cubed BF16 GEMM from 87.50 to 157.41 TFLOPS with FP32 accumulation.
- User reports put LLM prefill gains at 14-36%, while memory-bandwidth-bound decode and INT8 work stay about the same.
- The unlock gets code execution through a buffer overflow and Return Oriented Programming in NVIDIA's booter firmware, and none of the sources address warranty.
- Power limit determines much of the gain: the lowest reported BF16 GEMM gain, +25%, came from cards capped at 225 W.
gpu-unlock is a Linux kernel module that doubles the issue rate of FP16 and BF16 FMA instructions with FP32 accumulation on RTX 3000-series cards built on GA102, GA103, GA104 and GA106. It brings them to the rate of their professional equivalents. On an RTX 3090 Ti at 450 W, dense 8192-cubed BF16 GEMM goes from 87.50 to 157.41 TFLOPS, and users report 14-36% faster LLM prefill.
The project is published as GPU unlock 1.0.0 by Zagitta under GPL-2.0-only. It runs before the NVIDIA driver loads, so it works with the stock driver and does not need re-patching for each driver release. For anyone serving matmul-heavy inference on these cards, that removes the per-release driver-patching work earlier unlocks required. The trade is that the module gets there through a firmware exploit, which is a different kind of risk from a driver patch.
What gpu-unlock changes in the issue path
The README describes the module as combining the CMP unlocker's V67/PLM technique with the pre-driver timing of the UEFI approach. It runs the unlock and writes two speed selectors: SS0 to 0x88888888, which selects the full BF16 rate, and the 4-bit SS1 to 0x8 (IMLA4). It then performs FLR before the unmodified NVIDIA driver binds the card.
It is neither a UEFI application nor a patched NVIDIA driver.
One Hacker News commenter argued the headline was wrong and that the unlock only removes a halving of FP32. The README says the effect is on FP/BF16 FMA into FP32 operations, meaning 16-bit inputs with FP32 accumulation, which is the configuration in the benchmark. The commenter who identified as the author gave the same answer. The README's 3090 Ti table also lists TF32 rising from 42.58 to 82.61 TFLOPS. The README does not explain which selector controls TF32.
BF16 GEMM gains run from +25% to +81%
The headline numbers come from a single RTX 3090 Ti running dense 8192-cubed GEMM at 450 W. Each figure is the median of five samples with FP32 accumulation.
- FP16: 87.46 to 118.39 TFLOPS
- BF16: 87.50 to 157.41 TFLOPS
- TF32: 42.58 to 82.61 TFLOPS
The README also has a table of user-reported BF16 GEMM gains, each measured with the reporter's own benchmark:
- RTX 3090 Ti: +68-80%
- RTX 3090: +25-67%, the most reports
- RTX 3080 10 GB: +70-73%
- RTX 3080 20 GB (memory upgrade): +56-59%
- RTX 3070: +73-81%
- RTX 3060 12 GB: about +80%
There are exceptions. On the OEM RTX 3080 Ti 20 GB (GA102-250, 10de:2205), the unlock completes but BF16 stays at half rate. The RTX 3070 Ti has not been tested with this module, although the same unlock worked from a UEFI port on Windows. There are no reports for GA103. Because each report used its own benchmark, the README warns that the figures are not directly comparable. A commenter who said they had seen reports only for 3090-class cards was pointed to the issue tracker, which covers the cards above.
Prefill speeds up 14-36%, decode does not
The gain follows arithmetic intensity. The README reports LLM prefill speedups of 14-36% across four user reports, along with faster diffusion and FlashAttention. LLM decode is limited by memory bandwidth and does not change, and neither does INT8 work. The reports that compared outputs found them bit-identical before and after the unlock.
For a serving setup on 3090s, this means time-to-first-token on long prompts improves, while per-token generation speed on a single stream does not. One Hacker News commenter reported up to a 30% prefill boost in vLLM, depending on the kernels and prefill size. Another claimed 133 tokens per second on a 27B model, about 3.2x. Nothing in the README supports a decode gain of that size, so that figure should be treated as unverified. On training, commenters disagreed: one said it is often bandwidth-bound, another said it is compute-bound if batch sizes are large enough. The sources contain no training benchmarks.
It runs a ROP exploit in NVIDIA's booter
The mechanism is the main risk. A commenter quoted the project's own documentation on how the unlock gets control of the card:
Unfortunately for Nvidia the booter is vulnerable to a classic buffer overflow that writes straight into the stack which gives us the ability to execute code via Return Oriented Programming (ROP).
The commenter who identified as the author added more detail. The production firmware is encrypted, but NVIDIA published encrypted debug images that could be decrypted with a public test key. Those images were close enough to production firmware to build the exploit from. In their words, no unsigned code is executed, but the exploit still gets code execution control. Another commenter expects future hardware to use signed firmware that locks these settings.
The build downloads pinned NVIDIA and CachyOS inputs over HTTPS, checks their SHA-256 hashes, and generates the firmware payload locally. The payload derives from the pinned CMP reference, and NVIDIA firmware remains under NVIDIA's own terms. Neither the README nor the discussion mentions warranty or NVIDIA's position. The README does say that suspend to RAM powers the cards off and resets the selectors, which suggests the change lives in volatile state, but it does not state this directly.
Power limit, heat and the 450 W figure
The 3090 Ti result was measured at 450 W, and the README says the lowest reported gain (+25%) came from cards capped at 225 W. One commenter warned that the full payoff on some cards requires raising the power limit to 450 W, which they said is beyond what stock coolers were designed for. Another commenter saw gains without changing the power limit.
The commenter who identified as the author explained that the unlock flips the bits that halve the issue rate. At a fixed power cap, the card moves down its frequency curve to stay within the limit, so how much gain remains depends on the workload, and the card runs somewhat hotter. That commenter reported running two water-cooled 3090s for a month without problems. That is one setup, not a stability study. The sources have no thermal data, failure rates or long-duration tests on air-cooled cards.
Boot, suspend and recovery on Linux
The module only acts when the kernel command line opts in. It must run from the initramfs, before nvidia binds the card. Loading it by hand after boot does nothing to a card nvidia has already bound.
gpu_unlock.targets=all
gpu_unlock.targets=0000:21:00.0,0000:22:00.0
gpu_unlock.resume=0- All target cards are unlocked concurrently, which takes about a second in total. Reports cover up to four cards, the display card, and vfio-pci passthrough to a VM.
- On the display card, the screen is blank from the reset until nvidia-drm takes over.
- After suspend to RAM, the module re-unlocks cards before nvidia resumes them, adding about a second. Hibernation is not covered.
- The module does not install a softdep nvidia pre: rule, because kmod honors only the first such line it reads. Custom mkinitcpio configs need gpu_unlock placed before nvidia manually.
- If the card's firmware never stops, the module keeps the DMA buffers until the next power off. The README says to power off before retrying.
- To revert, remove gpu_unlock.targets= from the kernel command line.
According to commenters, this module can run alongside the existing P2P driver mod because it loads first. A separate port for RTX 4090 and 4070 Ti Super requires a pinned driver version.
Questions this raises
Does gpu-unlock make LLM token generation faster?
No. The README reports 14-36% faster prefill, but decode is limited by memory bandwidth and does not change. A Hacker News claim of a 3.2x decode gain on a 27B model is not supported by the README and should be treated as unverified.
How does gpu-unlock change the card's BF16 rate?
It exploits a buffer overflow in NVIDIA's booter firmware using Return Oriented Programming, then sets speed selector SS0 to 0x88888888 and SS1 to 0x8. It performs a function-level reset before the unmodified NVIDIA driver binds the card.
Which RTX 3000 cards does gpu-unlock work on?
Users report gains on the RTX 3090 Ti, 3090, 3080 10 GB and 20 GB, 3070 and 3060 12 GB. On the OEM RTX 3080 Ti 20 GB (GA102-250) BF16 stays at half rate. The 3070 Ti is untested with the module, and there are no GA103 reports.
Spotted an error? Email samir.s.sengupta@gmail.com and I will correct it and date the change at the top of the note. How these notes are researched, drafted and checked is in the editorial policy.
