deniz.in

Markets

Weather

Loading weather

· via Hacker News – Front Page (native)

Linux kernel module unlocks pro-level FP16/BF16 throughput on RTX 3000 GPUs

An open-source Linux kernel module lifts the FP16/BF16 instruction-rate cap on GeForce RTX 3000 cards to professional-equivalent levels, with user reports showing BF16 GEMM gains of 25–80%.

Linux kernel module unlocks pro-level FP16/BF16 throughput on RTX 3000 GPUs

What the module does

An open-source Linux kernel module called gpu-unlock, published on GitHub by Zagitta and picked up on the Hacker News front page, removes the cap Nvidia places on FP16 and BF16 instruction issue rates on consumer GeForce RTX 3000 graphics cards. On supported chips, it roughly doubles the rate at which FP/BF16 fused multiply-add operations issue into FP32 pipelines, matching the throughput of the company's professional equivalents, according to the project's README.

The module targets the Ampere GA102, GA103, GA104 and GA106 dies — in practice the RTX 3090 Ti down to the RTX 3060.

How it works

The project combines two earlier techniques: the V67/PLM method from the CMP unlocker and the pre-driver timing of a UEFI-based approach. The module loads early in boot — inside the initramfs, before the proprietary Nvidia driver binds to a card — writes the speed selectors (SS0 0x88888888, which selects the full BF16 rate, and the 4-bit SS1 0x8 IMLA4), then performs a function-level reset. After that, the completely unmodified Nvidia driver binds and initialises the card as usual.

The key practical benefit over a patched driver is durability: because the stock driver is untouched, nothing has to be re-patched every time Nvidia ships a new release. And it is not a UEFI application either, so it fits into a normal Linux boot flow.

The module is strictly opt-in. It does nothing unless gpu_unlock.targets=all (or a comma-separated list of PCI addresses) is added to the kernel command line, and it refuses to touch a card that another driver has already bound or initialised.

Measured results

The README reports dense 8192³ GEMM figures on an RTX 3090 Ti at 450 W with FP32 accumulation, using five-sample medians: FP16 rose from 87.46 to 118.39 TFLOPS, BF16 from 87.50 to 157.41 TFLOPS, and TF32 from 42.58 to 82.61 TFLOPS.

User-submitted compatibility reports show BF16 GEMM gains of 68–80% on the RTX 3090 Ti, 25–67% on the RTX 3090, 70–73% on the RTX 3080 10 GB, 73–81% on the RTX 3070 and roughly 80% on the RTX 3060 12 GB. The project notes the figures come from each reporter's own benchmark and are not directly comparable, and that power limits matter a great deal — the lowest result, +25%, came from cards capped at 225 W. One card, an OEM RTX 3080 Ti 20 GB (GA102-250), completes the unlock but BF16 stays at half rate, and there are no reports yet for GA103.

In real workloads, matrix-heavy tasks benefit: LLM prefill improved 14–36% across several reports, and diffusion and FlashAttention workloads also speed up. LLM decode, which is memory-bandwidth-bound, and INT8 computation are unchanged. Reports that compared outputs before and after found them bit-identical.

Deployment details

Installation is a make install away, with packages generated for Arch, Debian/Ubuntu and Fedora/RHEL families, and initramfs hooks for mkinitcpio, initramfs-tools and dracut so the module loads before the Nvidia driver. Builds download pinned inputs over HTTPS and verify their SHA-256 hashes, and the distributed source archives contain no Nvidia files or generated firmware.

Reports cover up to four cards in one machine, the card driving the display, and cards passed through to virtual machines via vfio-pci. Suspend-to-RAM powers the cards down and resets the selectors, so the module re-unlocks them on resume — adding about a second — while hibernation is not covered.

Why it matters

Consumer Ampere cards ship with their FP16, BF16 and TF32 issue rates restricted below what the silicon can do, reserving full-rate matrix throughput for far more expensive professional parts. A kernel module that restores those rates for free meaningfully extends the useful life of RTX 3000 hardware for machine learning workloads — especially prefill-heavy inference and training-style GEMM — without touching the driver binary or requiring per-release patching. The trade-offs are real: it writes hardware state outside Nvidia's sanctioned flow, results vary with power delivery and specific board revisions, and anything goes wrong, the user is on their own. Still, for Linux users running local models on Ampere cards, it is one of the larger free performance jumps available.

  • #linux
  • #nvidia
  • #gpu
  • #kernel-module
  • #open-source

Related posts