En breve: Construir su propia tarjeta gráfica es el tipo de tarea que la mayoría de la gente ni siquiera soñaría en intentar. Pero para un ingeniero emprendedor conocido como «adammaj» en X/Twitter, construir una GPU desde cero no era sólo una idea loca; fue un desafío conquistado en apenas dos semanas, incluso «sin experiencia previa».
¿Cómo logró Adam Majmudar fabricar un procesador gráfico completamente funcional en tan poco tiempo? Según su hilo detallado sobre X, no fue un paseo por el parque: «mucho más difícil de lo esperado», afirmó.
Uno de los mayores obstáculos fue simplemente tratar de comprender el funcionamiento interno de las arquitecturas de GPU existentes, que son en gran medida cajas negras patentadas. Pero una ingeniosa ingeniería inversa de marcos como CUDA de Nvidia ayudó a proporcionar información útil.
A partir de ahí, Adam tuvo que diseñar su propia arquitectura de GPU minimalista y sencilla centrada en la informática paralela general en lugar de en cargas de trabajo de gráficos. Creó un pequeño conjunto de instrucciones personalizadas para escribir programas (denominados «núcleos») para que su GPU los ejecute utilizando el paradigma SIMD (Instrucción única, datos múltiples) empleado por las GPU modernas.
Para probar su creación, Adam codificó núcleos matemáticos matriciales simples para ejecutarlos en su diseño de GPU casera. Lograr que la implementación de Verilog funcionara correctamente con toda la lógica de control fue donde surgieron los verdaderos desafíos, que requirieron múltiples rondas de revisiones y corrección de errores. Pero al final, la GPU de Adam pudo ejecutar correctamente los núcleos y producir los resultados correctos de la operación matricial.
«Después de toneladas de rediseños, finalmente ejecutar mis núcleos de suma y multiplicación de matrices, ver que todo funciona correctamente y que mi GPU genera los resultados correctos fue una sensación increíble», escribió.
Adam también proporcionó una visualización 3D genial para mostrar su GPU en acción. Para ser claros, el proyecto aún se encuentra actualmente en la fase de diseño del diseño del chip, que pasó por el software OpenLane EDA para su verificación, lo que demuestra que todo es físicamente realizable.
Aquí estoy jugando con una genial visualización en 3D del diseño de mi chip: puedo hacer zoom en diferentes partes del chip, aislar diferentes capas de metal y observar puertas y estructuras individuales en el diseño. pic.twitter.com/DdFzhX6a0S
– Adammaj (@MajmudarAdam) 25 de abril de 2024
Si bien la GPU de Adam es obviamente una prueba de concepto reducida en comparación con los chips gigantes de AMD y Nvidia, el logro sigue siendo inmensamente impresionante. Construir cualquier pieza de hardware semicomplejo desde cero es una experiencia de aprendizaje increíble, y mucho menos lograr algo tan sofisticado como un procesador paralelo.
Aún así, esta no es la primera vez que vemos GPU DIY en acción. A principios de abril, un desarrollador lanzó un motor 3D notablemente fluido que demostró en una pequeña GPU casera Alimentado por un microcontrolador Espressif ESP32-S3. No mucho antes de eso, un desarrollador de juegos diseñó ‘FuryGPU’ lo que podría renderizar Quake a unos sólidos 60 FPS.
Adam ha subido todo el código y la documentación de su mini GPU a GitHubpermitiendo que otros estudien, modifiquen y desarrollen su trabajo.