Executable programs and extensions

RTX 3090 BF16 unlock: what opens and what stays the same

What opens is BF16 and FP16 matrix throughput; the 24 GB of VRAM and its bandwidth do not change.

gpu-unlock, published on October 18, 2026, is a Linux kernel module that writes a speed selector before the NVIDIA driver binds the card, opening BF161 throughput2 on the RTX 3090. The repository verified it on one 3090, and the 3090 Ti numbers came from a separate fork. It does not add VRAM3 or speed up decode4, and it requires a cold boot with a rollback path.

Requirements and key details
  • gpu-unlock is not a driver patch but a kernel module that writes the SS0 selector before the driver binds.
  • On the 3090 Ti, BF16 rose from 87.50 to 157.41 TFLOPS, but there is no published 3090 table yet.
  • VRAM, bandwidth and token generation do not change, and the verified environment is one card on one distribution.

A kernel module published on October 18

gpu-unlock is a Linux kernel module that opens the blocked BF16 throughput on the RTX 3090. It is neither a UEFI app nor a patched NVIDIA driver: it writes a speed selector before the driver binds the card. The module is GPL-2.0, and the generated firmware derives from CMP unlock reference material.

The repository says it writes 0x88888888 to SS0 to select the full BF16 rate, and also writes the 4-bit SS1 value 0x8, whose effect is untested. The card must be cold-booted; warm reboots are not supported.

An RTX 3090 mounted in a case, a monitor showing colored bars and a flow diagram, a notebook and magnifier on the desk, and a plant
Separating the card from the compute path on screen shows where the unlock acts.

What opens is BF16 and FP16 matrix throughput

The maintainer answers that BF16 and F16 operations get about 40% faster. The published figures come from a separate fork tested on a 3090 Ti: at 450 W, dense 8192³ GEMM with FP325 accumulation and five-sample medians, BF16 rose from 87.50 to 157.41 TFLOPS, FP166 from 87.46 to 118.39 and TF32 from 42.58 to 82.61.

The table is for the 3090 Ti, and that test used Ubuntu kernel 7.0.0-38 with a modified 610.43.02 driver and a separate initramfs hook. A 3090 was also unlocked and passed CUDA7 checks, but no 3090 GEMM table has been published.

Published 3090 Ti measurements (450 W, dense 8192³ GEMM, FP32 accumulation, five-sample medians)
InputBeforeAfter
FP1687.46 TFLOPS118.39 TFLOPS
BF1687.50 TFLOPS157.41 TFLOPS
TF3242.58 TFLOPS82.61 TFLOPS

VRAM and bandwidth do not change

The unlock touches only the compute path. The RTX 3090 keeps its 24 GB of GDDR6X, 936 GB/s bandwidth and power limit. It is unrelated to the 48 GB memory mod, and it does not let you hold larger models.

Single-token decode is bound by how fast weights are read from memory. A higher BF16 rate therefore does not raise one request's tok/s by the same ratio.

Only one machine has been verified

The repository verified one RTX 3090 at PCI address 0000:21:00.0 on CachyOS kernel 7.2.8-1 with NVIDIA 615.71.09. Another card in the same machine served as an unmodified control. The module rejects other GA102 device IDs, so the targets are the 3090 and, through that separate fork, the 3090 Ti.

On kernels at or below 6.15, the power state does not come up before the driver loads, so the unlock fails; a patch is posted as an issue. The 3090 Ti is supported only by a separate fork, and other GA102 device IDs are rejected.

An RTX 3090 in a case, colored blocks moving along a conveyor to shelves, and cards printed with network diagrams on the work surface
Throughput differs by precision, but storage capacity does not grow with the unlock.

Cold boot and rollback are part of the deal

The module runs only when the kernel command line carries gpu_unlock.targets=, for example gpu_unlock.targets=0000:21:00.0 or all. It must load from initramfs before nvidia, and the machine must be powered off completely and started again.

To roll back, remove the option from the kernel command line and uninstall the packages. If firmware never stops, the module keeps DMA buffers until the next power-off, so power off before retrying. If the display stays blank, delete the option in the bootloader edit screen and boot.

Who should consider testing it

It matters to people running prefill-heavy, concurrent or LoRA8 fine-tuning workloads on a 3090. For short single-request answers the expected gain is small. Try it on a test PC rather than a work machine, after recording a baseline.

When testing, fix the power limit and the model, and record prefill9 time alongside concurrent throughput. Use a GEMM to isolate matrix compute, and llama-bench for the felt result.

A case with an RTX 3090 beside a check mark, and an open notebook with flow diagrams on the desk
Measure again under the same conditions afterward to see the real gain.

Terminology notes

  1. BF16 — A 16-bit floating-point format for model values. Its exponent has the same width as FP32, giving it a similarly wide value range.

    Back to the text
  2. Throughput — The amount of work processed or generated over time. Comparisons need the unit, such as tokens per second or requests per second.

    Back to the text
  3. VRAM — Memory used by a graphics card’s GPU to store model weights and intermediate values.

    Back to the text
  4. Token decoding — The stage that generates successive output tokens using the input and the response produced so far.

    Back to the text
  5. FP32 — A 32-bit floating-point format. It uses more memory per value than BF16 and can represent values more precisely.

    Back to the text
  6. FP16 — A 16-bit floating-point format. It uses the same bit width as BF16 but allocates bits differently between exponent and significand.

    Back to the text
  7. CUDA — A software platform for general-purpose computing on NVIDIA GPUs.

    Back to the text
  8. LoRA — A method that learns and applies small additional weights to adapt a base model. The adapter is used with the base model for purposes such as style adaptation or few-step generation.

    Back to the text
  9. Prefill — The stage where an LLM reads the input prompt and computes representations for its tokens. Longer prompts contain more tokens to process.

    Back to the text

Frequently asked questions

What should you check first in this article?
gpu-unlock, published on October 18, 2026, is a Linux kernel module that writes a speed selector before the NVIDIA driver binds the card, opening BF16 throughput on the RTX 3090. The repository verified it on one 3090, and the 3090 Ti numbers came from a separate fork. It does not add VRAM or speed up decode, and it requires a cold boot with a rollback path.
How much memory does it need?
The unlock touches only the compute path. The RTX 3090 keeps its 24 GB of GDDR6X, 936 GB/s bandwidth and power limit. It is unrelated to the 48 GB memory mod, and it does not let you hold larger models.