Qué desbloquea gpu-unlock en las GeForce RTX 30 y 40 y cuánto ganas en IA local
Índice de contenidos
- Puntos clave
- Qué límite tienen las GeForce en FP16 y BF16
- Cómo funciona gpu-unlock sin parchear el driver
- Cuánto rinde una RTX 3090 Ti desbloqueada
- Qué pasa con la RTX 4090 y la serie 40
- Cuánto se nota en LLM, difusión e inferencia
- Cómo se instala y cómo compruebas que funciona
- Riesgos y limitaciones antes de instalarlo
- Merece la pena comprar una RTX 3090 por esto
- Preguntas frecuentes
- ¿gpu-unlock funciona en Windows?
- ¿Mejora el rendimiento en juegos?
- ¿Hay que reinstalarlo al actualizar el driver de NVIDIA?
- Conclusión
- Fuentes
gpu-unlock es un módulo del kernel de Linux que, antes de que cargue el driver de NVIDIA, quita el límite que reduce a la mitad el ritmo de los tensor cores en FP16 y BF16 con acumulación FP32 en las GeForce RTX 30. En una RTX 3090 Ti, BF16 pasa de 87,5 a 157,4 TFLOPS; en LLM gana el prefill, no la generación.
gpu-unlock es un módulo del kernel de Linux que deja a una GeForce RTX 30 multiplicar matrices en FP16 y BF16 con acumulación FP32 al mismo ritmo que su hermana profesional. NVIDIA documenta ese límite en sus propios whitepapers desde 2020, y el proyecto de Zagitta lo quita antes de que cargue el driver oficial, sin parchearlo. Un fork, gpu-unlock-ada, lleva la misma idea a la RTX 4090. Aquí tienes qué límite es, cómo lo salta el módulo, qué cifras dan los dos README frente a la ficha oficial, qué gana de verdad un LLM local y qué riesgos asumes. No lo hemos ejecutado en una tarjeta propia: las cifras son de los autores y de su comunidad, contrastadas con los documentos de NVIDIA el 25 de octubre de 2026. Hay una versión en inglés de este artículo.
Puntos clave
- Las GeForce de NVIDIA ejecutan FP16 con acumulación FP32 y BF16 a la mitad de ritmo que FP16 con acumulación FP16. Una RTX 3090 tiene 142 TFLOPS en el primer modo y 71 en el segundo; la RTX A6000, con el mismo chip GA102, tiene 154,8 en los dos.
- gpu-unlock se carga desde el initramfs, ejecuta un firmware de NVIDIA, escribe dos registros de selección de velocidad y reinicia la tarjeta antes de que el driver oficial la tome.
- En una RTX 3090 Ti con una multiplicación de matrices de 8192³ a 450 W, BF16 pasa de 87,50 a 157,41 TFLOPS, TF32 de 42,58 a 82,61 y FP16 de 87,46 a 118,39.
- En una RTX 4090 desbloqueada, el ritmo de instrucciones FP16 llega a 331,6 TFLOPS, la cifra que NVIDIA publica para FP16 con acumulación FP16 (330,3). En cuBLAS real la ganancia baja a entre el 12 % y el 34 %.
- En un LLM local mejora el prefill (entre un 14 % y un 36 % según los informes), no la generación de tokens, que depende del ancho de banda de memoria.
Qué límite tienen las GeForce en FP16 y BF16
NVIDIA reserva a sus tarjetas profesionales el ritmo completo de los tensor cores cuando la entrada es FP16 o BF16 y el acumulador es FP32. Los tensor cores son las unidades que multiplican bloques de matrices en un ciclo, y el acumulador es el registro donde se suman los productos parciales. Acumular en FP32 evita que las sumas largas pierdan precisión. Por eso es el modo del entrenamiento con precisión mixta y de la inferencia en BF16, y según el whitepaper de la arquitectura GA102[1], BF16 solo existe con acumulación FP32.
Las tablas de ese mismo documento muestran la diferencia entre gamas con el mismo silicio:
Ada repite el patrón. El whitepaper de Ada Lovelace[2] da a la RTX 4090 330,3 TFLOPS en FP16 con acumulación FP16 y 165,2 con acumulación FP32. TF32, el formato de 19 bits que PyTorch usa para las multiplicaciones en FP32 cuando lo activas, también va a la mitad. El límite no está en el silicio: es una segmentación de producto, y por eso se puede quitar.
Cómo funciona gpu-unlock sin parchear el driver
gpu-unlock cambia el estado de la tarjeta antes de que el driver de NVIDIA la vea, en lugar de modificar el driver. El README de gpu-unlock[3] lo describe como "neither a UEFI application nor a patched NVIDIA driver" y detalla la secuencia:
- El módulo arranca desde el initramfs, antes de que
nvidiase enlace a la tarjeta - Ejecuta en la GPU un firmware generado a partir de la técnica del desbloqueador de las tarjetas de minería CMP (la cadena V67/PLM, que levanta las máscaras de nivel de privilegio)
- Escribe dos selectores de velocidad: SS0 con
0x88888888, que según el autor elige el ritmo BF16 completo, y SS1 con0x8 - Hace un reinicio de función PCIe (FLR, Function Level Reset) y deja que el driver oficial, sin tocar, tome la tarjeta
Como el driver no cambia, una actualización de NVIDIA no obliga a rehacer el parche, que era el problema de los intentos anteriores. El efecto, en palabras del README, es que el módulo "doubles the instruction issuing speed of FP/BF16 FMA into FP32 operations" en los chips GA102, GA103, GA104 y GA106. El código del módulo es GPL-2.0, y el firmware que genera sigue bajo la licencia de NVIDIA.
La noticia de Wccftech del 24 de octubre[4] cuenta otra cosa. Dice que el módulo devuelve al driver el identificador PCIe de una tarjeta profesional, y que funciona en las GTX 900, GTX 1000 y RTX 20. El README no dice nada de eso: solo acepta identificadores de GeForce Ampere, y el mecanismo son los selectores de velocidad. Si lees la noticia, quédate con las cifras y descarta la explicación.
Cuánto rinde una RTX 3090 Ti desbloqueada
La cifra del titular, "casi un 80 %", es la de BF16 en una RTX 3090 Ti. El autor midió una multiplicación de matrices densa de 8192³ a 450 W, con la mediana de cinco muestras y acumulación FP32:
BF16 gana un 80 % y TF32 casi se duplica (+94 %), pero FP16 se queda en un 35 %, y el README no explica por qué. En el resto de la serie 30 los informes de la comunidad dan estas ganancias en BF16:
Hay dos excepciones. En la RTX 3080 Ti de 20 GB para fabricantes (GA102-250) el desbloqueo termina, pero BF16 sigue a la mitad. Del chip GA103 no hay informes.
Qué pasa con la RTX 4090 y la serie 40
La serie 40 tiene su propio fork, gpu-unlock-ada de JustAResearcher[5], que añade una carga útil para el chip AD102 sacada del proyecto AD103_win_unlocker de TOTORONG. La RTX 4090 es el objetivo principal. La 4090 D, la 4070 Ti SUPER y la 4060 Ti de 16 GB son experimentales, probadas con una tarjeta cada una y detrás de un parámetro propio.
La cifra queda justo en el techo que NVIDIA publica para otro modo. Con el driver 615.78.08, la 4090 pasa de 165,6 a 331,6 TFLOPS en FP16 con acumulación FP32. La ficha de NVIDIA da 330,3 para FP16 con acumulación FP16:
El desbloqueo no inventa rendimiento: deja la acumulación FP32 al ritmo que la tarjeta ya tenía para la acumulación FP16. Un segundo propietario repitió la prueba a 450 W y obtuvo 160,4 frente a 320,4. El propio README advierte que son "register-resident issue rates, not application GEMM or inference speedups": con cuBLAS, la ganancia real fue del 12 % al 34 % en FP16, del 16 % al 20 % en BF16 y nula con matrices de 4096³.
Cuánto se nota en LLM, difusión e inferencia
El desbloqueo acelera las operaciones limitadas por cómputo y deja igual las limitadas por memoria. En un LLM local, el prefill (procesar el prompt entero de golpe) es una multiplicación de matrices grande, y los informes del README dan entre un 14 % y un 36 % más. Wccftech recoge un 33–36 % en el prefill de contexto largo con vLLM y un 25 % menos de tiempo hasta el primer token.
La generación de tokens, el decode, lee todos los pesos del modelo por cada token, y ahí manda el ancho de banda de la memoria, que no cambia. Si tu uso es un chat con prompts cortos, apenas notarás nada. Si procesas documentos largos, haces reranking o sirves RAG con contextos de decenas de miles de tokens, sí.
Tampoco cambian los formatos enteros ni FP8. El fork de Ada midió INT8 y dp4a sin cambios, y una multiplicación FP8 E4M3 en la 4070 Ti SUPER pasó de 59,326 a 59,495 TFLOPS (+0,3 %).
Si ya sirves modelos cuantizados con llama.cpp en enteros de 4 u 8 bits, el desbloqueo te aporta poco. Donde más se nota es en la generación de imágenes con difusión en BF16, en FlashAttention y en el ajuste fino con LoRA en BF16. Según el README, las salidas que se compararon eran idénticas bit a bit antes y después.
Cómo se instala y cómo compruebas que funciona
La instalación compila el módulo en tu máquina con DKMS y lo añade al initramfs. Necesitas las cabeceras de tu kernel y el toolchain de DKMS. Estos son los pasos del README para Debian y Ubuntu con GRUB, revisados el 25 de octubre de 2026:
git clone https://github.com/Zagitta/gpu-unlock.git
cd gpu-unlock
make install
# Añade gpu_unlock.targets=all a GRUB_CMDLINE_LINUX_DEFAULT
sudoedit /etc/default/grub
sudo update-grub
sudo poweroff
make install detecta la familia de la distribución (Arch, Debian o Fedora) y construye el paquete. El build descarga entradas fijadas de NVIDIA y CachyOS por HTTPS y comprueba su SHA-256. El parámetro gpu_unlock.targets=all activa el módulo en todas las tarjetas compatibles; puedes cambiar all por una dirección PCI concreta, como 0000:21:00.0. Apaga del todo en lugar de reiniciar: el fork de Ada exige un arranque en frío el primer intento.
Al arrancar, el kernel debe registrar el desbloqueo:
journalctl -k -b | grep gpu_unlock
lspci -nnk | grep -A3 -i nvidia
La primera orden busca la línea gpu_unlock: unlocked en el registro del kernel de este arranque; que el módulo cargue no basta. La segunda confirma que el driver nvidia tomó la tarjeta después. Para medir el antes y el después, este script de PyTorch calcula los TFLOPS de una multiplicación de 8192³ en FP16 y BF16:
import time
import torch
n, iters = 8192, 50
for dtype in (torch.float16, torch.bfloat16):
a = torch.randn(n, n, device="cuda", dtype=dtype)
b = torch.randn(n, n, device="cuda", dtype=dtype)
for _ in range(5):
a @ b
torch.cuda.synchronize()
t0 = time.perf_counter()
for _ in range(iters):
a @ b
torch.cuda.synchronize()
dt = time.perf_counter() - t0
tflops = 2 * n**3 * iters / dt / 1e12
print(dtype, round(tflops, 1), "TFLOPS")
Las cinco primeras multiplicaciones calientan la GPU y no cuentan. Cada multiplicación de dos matrices n×n son 2n³ operaciones, y el script divide el total entre el tiempo medido. Ejecútalo con el arranque normal y con el desbloqueo, con el mismo límite de potencia.
Riesgos y limitaciones antes de instalarlo
gpu-unlock toca el firmware de la tarjeta en cada arranque, y NVIDIA no lo soporta ni ha dicho nada sobre él. Los README enumeran estos riesgos:
- Solo Linux: el port para Windows de la RTX 4070 Ti es un perfil de una placa MSI, sin binarios ni instalador
- Carga tardía: si
nvidiaya tomó la tarjeta, cargar el módulo después no hace nada - Pantalla en negro: la salida de vídeo de la tarjeta queda en negro desde el reinicio FLR hasta que
nvidia-drmla toma - Suspensión: suspender a RAM restablece los selectores; el módulo vuelve a desbloquear al reanudar (un segundo más) y la hibernación no está cubierta
- Firmware colgado: si el firmware no termina, el módulo conserva sus buffers de DMA y hay que apagar del todo antes de reintentar
- Más de una GPU: el fork de Ada no ha validado el uso con más de una GPU
- Medidas: casi todas las cifras son de una sola ejecución en una sola tarjeta, a veces con el escritorio abierto
Hay un riesgo que no aparece en ningún README: la garantía y los términos de la licencia del driver. El módulo no modifica el driver ni flashea la BIOS, y apagar la máquina devuelve la tarjeta a su estado de fábrica. Aun así, ejecutar firmware de NVIDIA de una forma que NVIDIA no contempla es decisión tuya.
Merece la pena comprar una RTX 3090 por esto
No a los precios de esta semana. Según otra noticia de Wccftech del 24 de octubre[6], la RTX 3090 de segunda mano ha pasado de unos 1000 dólares a más de 2000 en eBay. Hay anuncios de la 3090 Ti a 2650 dólares. Con ese sobreprecio pagas una ganancia que, en cuBLAS y en LLM, es de entre un 12 % y un 36 %, no el 80 % del titular.
Si ya tienes una RTX 30 o una 4090 y entrenas, haces ajuste fino o generas imágenes en BF16 con Linux, el desbloqueo es una mejora gratuita que merece una prueba. Si tu uso es un chat local con modelos cuantizados, la memoria sigue siendo el límite. En ese caso te conviene más leer qué alternativas a NVIDIA hay o cómo encaja un motor como vLLM frente a llama.cpp.
Preguntas frecuentes
¿gpu-unlock funciona en Windows?
No. El módulo es para el kernel de Linux y se carga antes del driver desde el initramfs. Existe un port experimental para UEFI que se probó en Windows con una RTX 4070 Ti de MSI, pero no publica binarios ni instalador.
¿Mejora el rendimiento en juegos?
No hay pruebas de que lo haga. El desbloqueo afecta solo a los tensor cores con acumulación FP32, y en juegos esos tensor cores se usan para DLSS y poco más. Nadie ha publicado medidas en juegos con el módulo activo.
¿Hay que reinstalarlo al actualizar el driver de NVIDIA?
No, porque el módulo no modifica el driver. Sí hay que volver a generar el initramfs al actualizar el kernel, cosa que DKMS y los ganchos de mkinitcpio, initramfs-tools y dracut hacen solos.
Conclusión
gpu-unlock no saca rendimiento de la nada. Devuelve a las GeForce el ritmo de tensor FP16 y BF16 con acumulación FP32 que NVIDIA ya publica para sus tarjetas profesionales. Las cifras de instrucciones se duplican, pero las aplicaciones reales ganan entre un 12 % y un 36 %, y la generación de tokens no cambia.
Si tienes una RTX 30 o una 4090 en Linux y trabajas en BF16, mide con el script de arriba antes y después. Conserva una entrada de arranque sin el parámetro para volver atrás.
Fuentes: [1] NVIDIA, whitepaper de la arquitectura Ampere GA102[1], [2] NVIDIA, whitepaper de la arquitectura Ada Lovelace[2], [3] Zagitta, repositorio gpu-unlock[3], [4] JustAResearcher, repositorio gpu-unlock-ada[5], [5] Wccftech, la RTX 3090 Ti gana casi un 80 % en FP16 y BF16[4], [6] Wccftech, las RTX 30 y 40 se aceleran en IA y suben de precio[6].
Fuentes
Código fuente
Accede a todo el código fuente de este artículo en GitHub.
Ver en GitHub