NVIDIA caps your GeForce's tensor cores. This kernel module quietly un-caps them.
A Linux kernel module that removes NVIDIA's artificial half-speed limit on FP16/BF16/TF32 tensor math for RTX 20/30/40 cards — at boot, before the driver loads.
What it does
NVIDIA ships GeForce cards with tensor cores throttled to half rate for FP16, BF16, and TF32 math with FP32 accumulation — the exact math most AI training and unquantized inference uses. The same silicon sold as an RTX A-series card runs at full speed. gpu_unlock is a Linux kernel module that flips the speed selectors back to full rate at boot, before the stock NVIDIA driver binds the card. No patched driver, no VBIOS flash, nothing to redo on driver updates.
The interesting bit
It combines the cmpunlocker’s V67/PLM technique with the pre-driver timing of a UEFI approach: write the selectors (SS0 0x88888888 for full BF16 rate, SS1 0x8 IMLA4), do a function-level reset, then let the unmodified nvidia driver bind as usual. It’s opt-in via a kernel command line parameter, and it re-runs the unlock after suspend-to-RAM, since powering off the card resets the selectors. Outputs are bit-identical — only the speed changes.
Key highlights
- Up to 2× FP16/BF16/TF32 tensor throughput; measured BF16 GEMM gains of +65–100% across RTX 3060 through 4090
- Real-workload gains: +25–55% LLM prefill, +25–50% fine-tuning, +30–55% image generation, +50–60% FlashAttention/SDPA
- Ampere (RTX 30) is stable with 100+ user reports; RTX 40 and RTX 20 are experimental; Blackwell is unsupported
- Works on the display card too — the boot framebuffer keeps running until just before the reset
- Per-card opt-in by PCI address, or all supported cards; unsupported entries are logged and ignored
Caveats
- Linux only; a Windows port exists as a third-party fork, with the author explicitly telling you to be “very careful” with floating Windows installers
- Memory-bound LLM decode, INT8/FP8/INT4 models, and gaming see no change; the RTX 4090 runs out of power before it runs out of tensor cores
- Laptops often silently lose the unlock when the dGPU powers down; the README suggests disabling runtime power management but says to expect mixed results
Verdict
If you train or run unquantized models on a Linux RTX 30/40 box, this is close to a free lunch — same silicon, double the tensor rate. If you’re on Windows, on Blackwell, or only running quantized GGUF, move along.
Frequently asked
- What is Zagitta/gpu-unlock?
- A Linux kernel module that removes NVIDIA's artificial half-speed limit on FP16/BF16/TF32 tensor math for RTX 20/30/40 cards — at boot, before the driver loads.
- Is gpu-unlock open source?
- Yes — Zagitta/gpu-unlock is an open-source project tracked on heatdrop.
- What language is gpu-unlock written in?
- Zagitta/gpu-unlock is primarily written in C.
- How popular is gpu-unlock?
- Zagitta/gpu-unlock has 11.5k stars on GitHub.
- Where can I find gpu-unlock?
- Zagitta/gpu-unlock is on GitHub at https://github.com/Zagitta/gpu-unlock.