Llevo años viendo como el hardware se adueñaba de los programadores y la optimización de recursos quedaba delegada al segundo plano.
Durante años el hardware ha evolucionado tanto que no ha sido necesario para los programadores crear «buen» código, ya que realmente apenas no era necesario. El uso de herramientas como : DirectX, Vulkan, OpenGL etc y el avance de los micros, la ram, etc suplia esas carencias. Bueno, algunos que estuvimos con Arduinos y similares, pues algo nos esforzábamos, pero tampoco mucho. En los últimos años hay algunos indicios interesantes de la optimización y compresión para trabajar mejor con los recursos, en video y sobre todo en imagen como webp, avic etc. Es un síntoma de que alguien se preocupa por ello, aunque en este caso sea para ahorrar espacio-dinero en servidores. PERO, lo que ha pasado estos últimos días con el tema de DeepSeek es un tema realmente interesante. (me centro solo en el hardware y no en las limitaciones ideológicas finales del modelo, o de como ha sido de «destilado» su aprendizaje xd). Tener la tecnología GPU´s con ciertas limitaciones, ha llevado a un grupo de ingenieros a optimizar el código de tal forma que me ha recordado a nuestros héroes de los 80. Como usaban cada herramienta disponible como: desactivar señales del reloj para usos insospechados, cambios de paletas, cambiar las cabezas dejando los cuerpos de un personaje XD. matrices gigantes para representar un mapa, usar canales de audio etc. Más:

Como dijo David Crane (creador de Pitfall!): «No programábamos para la máquina, programábamos contra ella».
Y esto es lo que ha pasado en la programación de DeepSeek. 200 ingenieros volviéndose locos y esforzándose para crear y optimizar código. sin mas.
Hablo de esto con «relativa» ilusión por el hecho que se ha usado la licencia del MIT en su publicación «open source», lo que hará que todos los países con dos dedos de frente, se descarguen este modelo y puedan sacar los suyos propios. ( ps , gracias MEtA con su llama en este proceso, que no se nos olvide )

En el mundo de la computación de alto rendimiento y la inteligencia artificial, cada ciclo de GPU cuenta. Por eso, el reciente movimiento de DeepSeek —utilizando PTX (Parallel Thread Execution) en lugar de CUDA para exprimir al máximo las GPU NVIDIA H800— ha causado revuelo. Pero, ¿qué significa esto? ¿Y por qué es un guiño a la época dorada de la optimización extrema, como la que se vivió en los años 80 en España?

PTX vs. CUDA: El arte de hablar directamente con la GPU

CUDA es el marco de trabajo de NVIDIA para programar GPUs, una capa de abstracción que simplifica el desarrollo. Pero como todo framework, introduce cierta sobrecarga. PTX, en cambio, es el lenguaje intermedio de bajo nivel que el compilador de CUDA genera antes de traducirlo a código máquina específico de la GPU. Al programar directamente en PTX, los ingenieros de DeepSeek han eliminado intermediarios, ajustando manualmente instrucciones, registros y el uso de memoria para aprovechar al 100% la arquitectura de las H800.

Es como tener un Ferrari y, en lugar de usar el modo «Confort», quitar el volante para conectar directamente un joystick a la dirección. El control es total, pero requiere maestría.

Analogía Retro: España en los 80, programando en código máquina

En la década de los 80, los ordenadores como el ZX Spectrum o el Amstrad CPC tenían limitaciones brutales (48 KB de RAM, CPUs de 3.5 MHz). Los programadores españoles, como Paco Menéndez (creador de Sir Fred, La Abadñia de Crimen), no usaban compiladores: escribían directamente en código máquina o ensamblador, optimizando cada byte y ciclo de CPU. Era una danza con el hardware, donde un error de un bit podía colgar el sistema, pero la recompensa era crear maravillas como La Abadía del Crimen en 128 KB.

DeepSeek, al usar PTX, está haciendo lo mismo: saltarse las capas de abstracción para hablar directamente con la GPU, ajustando cada hilo y operación. Es un regreso a la filosofía old-school, donde el ingenio humano supera las limitaciones del software.

El efecto «Hardware abundante»: Cuando la comodidad aletarga al código

Las mejoras de hardware de las últimas décadas —Ley de Moore, GPUs con miles de núcleos, memorias de terabytes— han creado una falsa sensación de seguridad. Los programadores ya no optimizan al extremo: confían en que el hardware compensará código inflado o ineficiente. ¿Para qué ajustar un bucle si puedes añadir más núcleos? ¿Para qué gestionar memoria si hay 64 GB de RAM?

Pero esta actitud tiene un costo: ineficiencia energética, modelos de IA que requieren clusters gigantescos, y código que no escala. Como dijo Donald Knuth: «La optimización prematura es la raíz de todo mal, pero la optimización tardía es el pecado capital».

La lección de «La Abadía del Crimen»: 128 KB de pura magia

En 1987, Paco Menéndez y su equipo lograron lo imposible: meter un «juego 3D» de exploración no lineal, con inteligencia artificial, física y una historia compleja, en 128 KB. ¿Cómo? Reutilizando cada byte, comprimiendo datos en tiempo real, y programando en ensamblador para el ZX Spectrum. Cada línea de código era una obra de arte.

Hoy, DeepSeek ha replicado esa hazaña en el mundo de las GPUs. Al evitar CUDA y usar PTX, han reducido la sobrecarga, optimizando el paralelismo y la gestión de memoria de las H800 para entrenar modelos de IA con una eficiencia que rivaliza con soluciones mucho más costosas.

Qué es PTX?

  • PTX (Parallel Thread Execution) es un lenguaje intermedio que actúa como una capa entre el código de alto nivel (como CUDA C/C++) y el código máquina específico de una GPU (llamado SASS en NVIDIA).
  • No es código máquina binario (como los 1s y 0s que ejecuta directamente el hardware), sino un lenguaje textual que describe operaciones paralelas, registros, hilos y memoria.
  • No es ensamblador tradicional (como x86 ASM para CPUs), pero se le parece en sintaxis y nivel de control. Por ejemplo, un fragmento de PTX podría verse así:
    .global .u32 %r1;
    ld.global.u32 %r1, [%rd4];
    add.u32 %r2, %r1, 42;

    Aquí se manipulan registros (%r1, %rd4) y operaciones directamente, como en ASM, pero con abstracciones específicas para GPUs.

    La analogía correcta: PTX es como un «ensamblador portable» para GPUs

    • ASM (ensamblador) para CPUs:
      • Se escribe en instrucciones como MOV, ADD, JMP, que se mapean directamente al código máquina de una CPU específica (ej: x86, ARM).
      • Cada familia de CPUs tiene su propio conjunto de instrucciones.
    • PTX para GPUs:
      • Es un lenguaje de bajo nivel, pero portable entre arquitecturas de GPU NVIDIA (ej: Ampere, Hopper).
      • El compilador de NVIDIA (ptxas) traduce PTX a SASS (el código máquina real de la GPU, como H800).
      • Es decir, PTX es a SASS (código máquina de GPU) lo que el ensamblador x86 es al código binario de una CPU.

Conclusión: DeepSeek, herederos del genio español

Los ingenieros de DeepSeek han demostrado ser dignos sucesores de Paco Menéndez y otros pioneros españoles. En una era dominada por la abstracción y la nube, ellos recuerdan que el ingenio humano sigue siendo la mejor herramienta para desafiar los límites.

Como en los 80, cuando España brilló en la escena del software con recursos mínimos, hoy DeepSeek escribe un nuevo capítulo: programar cerca del metal no es nostalgia, es una necesidad en la frontera de la IA. Y, como entonces, España sigue produciendo genios que entienden que, a veces, menos capas significan más poder.

¿Será esta la clave para la próxima revolución de la IA? Solo el tiempo lo dirá. Pero mientras tanto, bienvenidos al renacimiento de la optimización extrema.