- Las GPU son 10 a 100 veces más potentes que las CPU, pero tienen dificultades para manejar trabajo dinámico y carecen de buenas herramientas de programación paralela, por lo que no aprovechan plenamente su rendimiento en tareas generales
- En el pasado hubo diseños de computadoras paralelas como Connection Machine, Cell y Larrabee, pero fracasaron por la complejidad del modelo de programación, entre otros motivos
- En las GPU modernas es difícil optimizar el rendimiento debido a problemas de gestión de memoria y a un modelo de ejecución complejo, y se necesita una estructura eficiente de transferencia de datos basada en colas
- Nuevas arquitecturas como los aceleradores de IA y los conjuntos de núcleos paralelos podrían superar las limitaciones de las GPU
- El desarrollo de las computadoras paralelas sigue incompleto, y se necesitan mejoras en modelos de ejecución simples y eficientes, así como en las herramientas de programación
El gran rendimiento de las GPU y sus límites
- Las GPU son alrededor de 10 a 100 veces más potentes que las CPU (según el tipo de tarea)
- Ese rendimiento se aprovecha bien en renderizado gráfico en tiempo real y aprendizaje automático
- Sin embargo, el rendimiento de las GPU no se aprovecha suficientemente en tareas generales
Causas de las limitaciones de las GPU
- Modelo de ejecución deficiente
- Las GPU son fuertes con datos masivos y predecibles (por ejemplo, multiplicación de matrices densas), pero rinden peor en trabajo dinámico
- Lenguajes y herramientas insuficientes
- Programar computadoras paralelas es en sí mismo muy difícil
Aumento de la complejidad
- Las GPU más recientes están aumentando rápidamente en complejidad
- Se han introducido nuevas funciones como mesh shaders y work graphs, pero algunas tareas básicas siguen sin estar soportadas
El complejo problema de eficiencia de memoria en las GPU
- El autor está desarrollando un renderizador avanzado de gráficos vectoriales 2D llamado Vello
- La CPU sube la descripción de la escena (formato SVG) → un compute shader la procesa y genera la imagen
- Problema: la dificultad de gestionar la memoria
- Es difícil predecir el tamaño de los búferes para almacenar resultados intermedios
- Si el búfer se desborda, una lectura desde la GPU hacia la CPU provoca una caída de rendimiento
Propuesta de solución
- Mejorar el sistema para que los resultados se transfieran mediante una cola (queue) dentro de la GPU
Diseños históricos de computadoras paralelas
-
Connection Machine (1985)
- Computadora paralela con 64k procesadores conectados mediante una red hipercubo
- Cada procesador tenía bajo rendimiento, pero permitía trabajo masivamente paralelo
- Hizo una gran contribución a la investigación de algoritmos paralelos
-
Cell (2006, PS3)
- Computadora paralela incluida en la PS3 (se enviaron alrededor de 87.4 millones de unidades)
- 8 núcleos paralelos podían ejecutar cálculos de forma independiente
- La complejidad del modelo de programación fue la causa de su fracaso
-
Larrabee (2008)
- Fue desarrollada como una computadora paralela basada en x86
- Razones de su fracaso: consumo de energía y falta de soporte de software
- Más tarde dio pie a Xeon Phi y a las instrucciones AVX-512
Cargas de trabajo cambiantes
- Incluso en los juegos está aumentando la proporción de trabajo computacional
- En el caso de Starfield, alrededor del 50% del tiempo total de trabajo es cómputo
- El renderizador Nanite también procesa por cómputo la rasterización de triángulos pequeños
Hacia dónde podría avanzar
-
1. Ampliación de conjuntos de núcleos (regreso de Cell)
- Las CPU modernas de gama alta incluyen más de 100 mil millones de transistores
- Es posible fabricar chips con cientos o miles de núcleos RISC simples y de bajo consumo
- Los aceleradores de IA ya están adoptando arquitecturas similares
-
2. Ejecutar comandos Vulkan en la GPU
- Permitir que la GPU ejecute comandos Vulkan directamente
- Actualmente esto está implementado de forma limitada en algunas extensiones de Vulkan
-
3. Work Graph
- El programa se compone de nodos (kernels) y aristas (colas)
- Se ejecuta en paralelo, pero existen limitaciones como las siguientes
- Es difícil hacer operaciones de join
- No se garantiza el orden de clasificación de los elementos
- No se soportan elementos de tamaño variable
-
4. Evolución hacia la fusión con la CPU
- Los diseños de CPU de alto rendimiento podrían optimizarse para procesamiento paralelo
- El rendimiento de cómputo paralelo y de SIMD (instrucción única, múltiples datos) sigue mejorando
-
5. Es posible que el hardware ya esté listo
- Algunas GPU incluyen procesadores de comandos capaces de ejecutar código de usuario
- Si esos procesadores de comandos se abren por completo, podría haber mejoras de rendimiento
El problema de la complejidad
- La arquitectura de las GPU es excesivamente compleja
- Se mezclan computadora paralela + hardware especializado + estructura de procesamiento de comandos
- Existen problemas de compatibilidad entre diversas API y drivers
- En cambio, las CPU siguen mejorando su rendimiento sobre la base de conjuntos de instrucciones simples
Conclusión
- El desarrollo de las computadoras paralelas sigue incompleto
- Para que las GPU se optimicen para tareas generales además de gráficos e IA, se necesita lo siguiente
- Un modelo de ejecución simple
- Facilidad de programación
- Bajo consumo de energía
- Será posible aprovechar plenamente el rendimiento de las computadoras paralelas en trabajos como renderizadores 2D avanzados como Vello
- Se necesita una nueva arquitectura de computadora paralela que supere los límites de rendimiento de las GPU
1 comentarios
Comentarios en Hacker News
"Cree que hay dos factores principales que lo impiden"
El modelo de programación es ineficiente en 2025
experiencia trabajando en una empresa que "metió cientos de CPU pequeñas en un solo chip"
La GPU es de 10 a 100 veces más potente que la CPU
opinión sobre construir una supercomputadora con M4 Mac mini
problemas de las computadoras paralelas
no está claro por qué un renderizador 2D necesita una GPU
se menciona mucho a Larabee, pero no a Xeon Phis
sacrificios que hacen posible el alto rendimiento de la GPU