Ce qui se passe
Le dépôt Zagitta/gpu-unlock (version 1.0.0) publie un module noyau Linux qui
double le débit d'émission des instructions FP16 et BF16 vers des opérations
FP32 sur les puces GA102, GA103, GA104 et GA106, soit les RTX série 30,
jusqu'au niveau de leurs équivalents professionnels. Il reprend la technique
V67/PLM de l'outil CMP et la fait tourner avant le pilote : il écrit les
registres de vitesse (SS0 0x88888888 pour le plein débit BF16, SS1 0x8),
puis réinitialise la carte (FLR) avant que le pilote Nvidia ne la prenne.
Ce n'est ni une application UEFI ni un pilote patché, donc rien à reprendre à
chaque version du pilote.
Les mesures
Sur une 3090 Ti à 450 W, produit matriciel dense 8192³, médianes de cinq échantillons, accumulation FP32 :
| Entrée | Avant | Après |
|---|---|---|
| FP16 | 87,46 TFLOPS | 118,39 TFLOPS |
| BF16 | 87,50 TFLOPS | 157,41 TFLOPS |
| TF32 | 42,58 TFLOPS | 82,61 TFLOPS |
Les retours d'utilisateurs, avec chacun son banc d'essai, donnent un gain BF16 qui dépend de la carte et de sa limite de puissance (+25 % pour des cartes bridées à 225 W) :
| Carte | ID PCI | Résultat |
|---|---|---|
| RTX 3090 Ti | 10de:2203 |
débloquée, +68 à +80 % |
| RTX 3090 | 10de:2204 |
débloquée, +25 à +67 % |
| RTX 3080 10 Go | 10de:2206 |
débloquée, +70 à +73 % |
| RTX 3080 20 Go (mémoire modifiée) | 10de:2206 |
débloquée, +56 à +59 % |
| RTX 3080 Ti 20 Go (OEM, GA102-250) | 10de:2205 |
déblocage terminé, BF16 reste à demi-débit |
| RTX 3070 | 10de:2484 |
débloquée, +73 à +81 % |
| RTX 3070 Ti | 10de:2482 |
non testée avec ce module (déblocage via UEFI réussi sous Windows) |
| RTX 3060 12 Go | 10de:2504 |
débloquée, environ +80 % |
| GA103 (toute carte) | 10de:2414 |
aucun retour |
Pour un LLM : le prefill gagne de 14 à 36 % dans quatre rapports, ainsi que la diffusion et FlashAttention. Le décodage, borné par la bande passante mémoire, et le calcul INT8 restent identiques ; les sorties comparées étaient identiques bit à bit avant et après.
Comment s'y prendre
git clone https://github.com/Zagitta/gpu-unlock
cd gpu-unlock
make installmake install détecte la distribution (Arch, Debian/Ubuntu, Fedora/RHEL),
télécharge les entrées Nvidia épinglées, contrôle leur SHA-256 et génère le
firmware en local. Le module s'insère dans l'initramfs avant nvidia, mais ne
fait rien sans option sur la ligne de commande du noyau :
gpu_unlock.targets=all
gpu_unlock.targets=0000:21:00.0,0000:22:00.0La seconde forme vise des cartes par adresse PCI complète (lspci -D). Sous
Debian ou Ubuntu, l'ajouter dans GRUB_CMDLINE_LINUX_DEFAULT de
/etc/default/grub puis sudo update-grub ; sous Fedora ou RHEL :
sudo grubby --update-kernel=ALL --args="gpu_unlock.targets=all". Vérifier :
journalctl -k -b | grep gpu_unlock
lspci -nnk -s 0000:21:00.0Pour arrêter, retirer le paramètre. Après une mise en veille en RAM, le module
rejoue le déblocage (environ une seconde de plus à la reprise ;
gpu_unlock.resume=0 le désactive) ; l'hibernation n'est pas couverte.
Limites et précautions
- Les gains sont des rapports d'utilisateurs, pas des chiffres de Nvidia, et rien n'est garanti par le constructeur.
- Le module touche aux registres de la carte : tester d'abord hors production. Une carte déjà liée à un pilote ou éteinte est ignorée ; si le firmware d'une carte ne s'arrête jamais, éteindre complètement avant de réessayer.
- La carte qui pilote l'écran fonctionne aussi, mais l'écran reste noir de la
réinitialisation jusqu'à la prise en main par
nvidia-drm. - Le module est sous GPL-2.0 ; la charge utile dérive de la référence CMP, et le firmware Nvidia reste sous ses propres conditions.
Source : GitHub — Zagitta/gpu-unlock, README consulté le 25 octobre 2026. Source en anglais.