RTX 30 Series BF16 Unlock Speeds Up ComfyUI by Up to 60%

ComfyUI Wikinews

An open-source Linux kernel module restores the FP/BF16 issue rate on RTX 30 cards. On one 3090 Ti, ComfyUI BF16 graphs run 31 to 60 percent faster while INT8 stays flat.

<code>Zagitta/gpu-unlock</code> restores the FP16 and BF16 instruction issue rate that NVIDIA caps on GeForce RTX 30 cards. It is a Linux kernel module that runs before the official driver binds the GPU, so a driver update does not undo it. The repository went public on October 18, 2026, and passed 2,800 stars within a week.

The card family has carried a software cap for years: consumer GA102, GA103, GA104 and GA106 chips issue FP/BF16 fused multiply-add into FP32 at half the rate of their professional siblings, with the same silicon underneath. gpu-unlock writes the speed selectors that lift that ceiling before nvidia loads, so the rest of the stack runs unmodified.

What the module changes

The project combines two earlier approaches: the CMP unlocker's V67/PLM technique, and the pre-driver timing of the UEFI method. Concretely, before the NVIDIA driver binds a card, the module writes speed selector SS0 0x88888888, which selects the full BF16 rate, and the 4-bit SS1 0x8 for IMLA4, then performs FLR and exits. It is neither a UEFI application nor a patched driver, which is the property its author emphasizes: there is no patch to redo every time NVIDIA ships a new driver version.

The README states the effect plainly: it doubles the instruction issue rate of FP/BF16 FMA into FP32 on those four chip families. The module does nothing unless the kernel command line opts in with gpu_unlock.targets=, either all or a list of PCI addresses, and cards are unlocked concurrently in about a second however many there are.

What the numbers look like

The project's own reference measurement is a dense 8192³ GEMM on an RTX 3090 Ti at 450 W, five-sample medians with FP32 accumulation:

Dense GEMM throughput on an RTX 3090 Ti before and after the unlock

BF16 goes from 87.5 to 157.4 TFLOP/s and TF32 from 42.6 to 82.6, nearly doubling, while FP16 gains less at 87.5 to 118.4. The README describes the change as doubling the issue rate of FP/BF16 FMA into FP32 without breaking the numbers down per data type, so the published table is the only measurement of that split.

User compatibility reports, collected in the repository README, cover the rest of the stack:

CardResultBF16 GEMM gain
RTX 3090 TiUnlocked+68–80%
RTX 3090Unlocked+25–67%
RTX 3080 10 GBUnlocked+70–73%
RTX 3080 20 GBUnlocked+56–59%
RTX 3070Unlocked+73–81%
RTX 3060 12 GBUnlockedabout +80%
RTX 3080 Ti 20 GB (OEM)Unlock completes, BF16 stays at half ratenone
RTX 3070 TiNot tested with this modulenone
Reported BF16 GEMM gains per card

The README is explicit that these figures come from each report's own benchmark and are not directly comparable. Power limit is the main confounder: the lowest figure, +25% on a 3090, comes from a card capped at 225 W.

Measured in ComfyUI

The useful test for this site is not GEMM but generation. An independent RTX 3090 Ti owner, u/under-_-null, ran the same graphs on stock and unlocked drivers and published median time per image or clip: up to 60% faster on BF16 pipelines, and close to unchanged on INT8.

ComfyUI median time per image or clip on an RTX 3090 Ti, stock versus unlocked
Model and precisionStockUnlockedGain
MOSS-Image SFT BF1671.98 s45.40 s+58.6%
Qwen-Image 2.1 Turbo BF168.51 s5.41 s+57.2%
Z-Image Turbo BF166.79 s4.35 s+56.1%
FLUX.1 dev FP8 checkpoint31.96 s20.66 s+54.6%
Krea 2 Turbo BF1615.65 s10.70 s+46.3%
MiniMax H3 BF16 (video and audio)253.27 s158.05 s+60.2%
LTX-2.5 distilled BF16 (video and audio)70.81 s60.63 s+16.8%
MOSS-Image SFT INT827.31 s27.23 s+0.3%
Qwen-Image 2.1 Turbo INT83.92 s3.75 s+4.6%
MiniMax H3 INT8 ConvRot155.07 s118.21 s+31.2%

Two things stand out. The gains concentrate in BF16 work, which is where the issue rate matters; INT8 quantization paths are almost untouched, so a user who already runs INT8 ConvRot checkpoints gets a few percent, not 60. MiniMax H3 under INT8 ConvRot is the exception at 31%, far above the other INT8 rows in the same report.

Output fidelity held up: the same report matched 150 unlocked and stock still-image runs and found identical decoded RGB pixels. Other compatibility reports in the repository say the same, which is consistent with an issue-rate change rather than a precision change.

Requirements and risks

This is an unsigned kernel module that modifies GPU firmware behaviour before the official driver binds. It is Linux only, covers GA102/GA103/GA104/GA106 GeForce cards, and needs a cold boot with an explicit kernel command line opt-in. If it goes wrong the failure mode is a card that does not initialise, so treat it as experimental.

Details that matter before trying it, all from the project documentation:

  • Linux only. The module builds against installed kernel headers and installs through mkinitcpio, initramfs-tools or dracut, with Arch, Debian and Fedora package targets.
  • Opt in per card. gpu_unlock.targets=all unlocks every unbound GA10x card; otherwise list PCI addresses as lspci -D prints them. Cards already initialised by a driver are refused.
  • Cold boot. Loading the module by hand after boot does nothing to a card nvidia has already bound.
  • Suspend handling. Speed selectors reset on power loss, so the module re-unlocks on resume through a suspend notifier unless disabled with gpu_unlock.resume=0. Hibernation is not covered.
  • Display cards work, with the console blanked from the reset until nvidia-drm takes over.
  • Not every card responds. The OEM RTX 3080 Ti 20 GB completes the unlock but keeps BF16 at half rate, and there are no reports yet for GA103.

A separate community project, impacifist/Windows-GPU-UNLOCK, ports the technique to a UEFI path for Windows users. It is not part of the original project and was not tested here.

Availability

Comments

Sign in with GitHub to join the discussion.

Loading comments…
RTX 30 Series BF16 Unlock Speeds Up ComfyUI by Up to 60% | ComfyUI Wiki