"2x FP16 on an RTX 4090" is the headline going around for gpu-unlock-ada. It is a Linux kernel module that runs at boot, before the stock NVIDIA driver loads, and switches supported RTX 40 cards to full-rate FP16 and BF16 tensor math with FP32 accumulation.
The 2x is real, but it is not what your training job will see. This guide explains what the numbers actually say, what the risks are, and how to install and measure it on your own card so you can decide for yourself.
What the numbers really say
The README reports two kinds of results, and the difference is the whole story.
Instruction benchmarks (register-level issue rate). On an RTX 4090 (10de:2684):
| Mode | Before | After |
|---|---|---|
| FP16, FP32 accumulate | 165.6 TF/s | 331.6 TF/s |
| BF16, FP32 accumulate | 165.5 TF/s | 330.6 TF/s |
An independent owner run with NVIDIA 615.78.08 and the same 450 W cap found 160.4 to 320.4 TF/s for FP16 and 159.7 to 320.2 TF/s for BF16. All exercised numerical checks passed.
Real cuBLAS GEMM. In that same matched run, median GEMM throughput varied by shape:
- FP16 gained 12 to 34%
- BF16 gained 16 to 20% at two shapes and was essentially unchanged at 4096³
The README is explicit that these are one matched run pair with the desktop active, not whole-application speedups and not an extended stability test. INT8, dp4a and scalar FP32 stayed near baseline. On one RTX 4070 Ti SUPER, a verified E4M3 FP8 CUTLASS GEMM went from 59.326 to 59.495 TF/s, a 0.3% difference.
So the honest summary: double the tensor instruction rate, a meaningful but much smaller gain in real matrix multiplies, and nothing for INT8 or FP32.
The risks, plainly
- It is unofficial and unsupported by NVIDIA and may void your warranty.
- The payload derives from published analysis of NVIDIA's debug booter (from TOTORONG/AD103_win_unlocker) and changes GPU register state from a kernel module before the driver loads.
- It has been validated on very few cards. The RTX 4070 Ti SUPER (
10de:2705) and RTX 4060 Ti 16GB (10de:2805) paths are experimental and validated on one card each. Other Ada models, professional RTX A-series and data-centre parts are not accepted. - No extended stability test exists yet.
If that is fine for your machine, keep reading.
Requirements
- A Linux machine you fully control, with an unmodified stock boot entry to fall back to
- Kernel headers, a working DKMS toolchain, and
CONFIG_CRYPTO_LIB_SHA256in the kernel - The stock NVIDIA driver
- Secure Boot off, or the out-of-tree module signed with your own key
- Your own stock benchmark numbers, taken before you enable anything
Step 1: measure stock first
Run the CUDA instruction benchmark in diagnostics/bench plus one real workload of yours. Write down your kernel, driver version and power cap. Keep all three identical for the unlocked run, or the comparison means nothing.
Step 2: build and install
git clone https://github.com/JustAResearcher/gpu-unlock-ada.git
cd gpu-unlock-ada
make install
make install detects your distribution family (explicit targets: make install-arch, make install-deb, make install-rpm). The build downloads the pinned NVIDIA 610.43.03 inputs over HTTPS, verifies their SHA-256 hashes and generates the firmware on your machine. Prebuilt firmware is not distributed. The package puts the module and firmware into the initramfs so it runs before NVIDIA binds the card.
Step 3: opt in on the kernel command line
The module stays inactive until you opt in. Find the card's full PCI address with lspci -D, then add it:
gpu_unlock.targets=0000:03:00.0
That address is an example; use your own. For the experimental cards, add the matching flag with a single exact address (targets=all never selects them):
gpu_unlock.targets=0000:01:00.0 gpu_unlock.ad103_experimental=1
gpu_unlock.targets=0000:01:00.0 gpu_unlock.ad106_experimental=1
The first is for an RTX 4070 Ti SUPER, the second for an RTX 4060 Ti 16GB.
Step 4: cold boot
Power the machine off and start it again for the first attempt. The module needs a card whose firmware state is fresh before NVIDIA loads, and a warm reboot is not guaranteed to give that. Avoid running nvidia-smi, CUDA, NVML or nvidia-modprobe before a manual cold-card attempt, because they can load NVIDIA by name.
Step 5: verify it actually worked
journalctl -k -b | grep gpu_unlock
Look for your card's gpu_unlock: unlocked line plus the payload, selector and post-FLR checks. A loaded module or a successful modprobe alone does not prove an unlock. If the module reports that firmware did not stop and its DMA buffers are being kept, power off before trying again and do not force-unload it.
Step 6: rerun the same benchmarks
Same kernel, same driver, same power cap. Compare FP16, BF16, INT8 and FP32 against the testing guide in docs/testing.md. Your own GEMM numbers are the only ones that matter for your workload.
How to turn it off
Remove gpu_unlock.targets= from the kernel command line (you can do it for one boot in the bootloader editor). Removing the packages removes the module and initramfs integration. Power off to return the card to a fresh hardware state.
Use cases with copy-paste prompts
- Unlock full-rate FP16 and BF16 tensor math on an RTX 4090
- Benchmark stock vs unlocked tensor throughput
- Test the experimental RTX 4070 Ti SUPER or 4060 Ti path
Get one email every Monday with the week's hottest AI repos and exactly how to use them: subscribe free at dedupedai.com
Top comments (0)