10 puntos por GN⁺ 2025-03-24 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2025-03-24
Comentarios en Hacker News
  • "Cree que hay dos factores principales que lo impiden"

    • guía para revestir opiniones como si fueran científicas
    • en la experiencia trabajando con el procesador Cell, se necesitaba mucha microgestión
    • los sistemas modernos están diseñados considerando protección de memoria, aislamiento y estabilidad
    • hacer que escriban código en un Amiga generaría una nueva apreciación
  • El modelo de programación es ineficiente en 2025

    • hay que compilar código fuente/bytecode de shaders en tiempo de ejecución
    • es difícil manipular estructuras de datos entre CPU y GPU en NUMA/discreto
    • se necesita sincronizar el acceso a datos entre tareas CPU-GPU y entre tareas de GPU
    • hay que lidiar con APIs confusas debido a hardware no estandarizado
    • hay que manejar combinaciones de configuraciones variadas
  • experiencia trabajando en una empresa que "metió cientos de CPU pequeñas en un solo chip"

    • el modelo de programación es tan extraño que fracasará
    • la siguiente generación no será una nueva arquitectura, sino una GPU con funciones adicionales
  • La GPU es de 10 a 100 veces más potente que la CPU

    • muchas tareas no necesitan más rendimiento
    • las GUI han sido reactivas a la entrada del usuario por más de 20 años
    • hay que simplificar la programación de GPU
  • opinión sobre construir una supercomputadora con M4 Mac mini

    • ingeniería inversa del conjunto de instrucciones de la GPU y el Neural Engine del Apple M3 Ultra
    • puede realizar más de 50 billones de operaciones por segundo
  • problemas de las computadoras paralelas

    • mucha gente tendría que adoptar el dispositivo con fines de desarrollo
    • portar código de CPU a GPU es un trabajo grande
    • AMD y otras empresas exploran la idea de acercar más la GPU a la CPU
  • no está claro por qué un renderizador 2D necesita una GPU

    • un renderizador 3D sí necesita ayuda
    • Vulkan está por debajo del nivel del renderizador
    • existen puntos de fricción en el diseño de renderizadores en Rust 3D
  • se menciona mucho a Larabee, pero no a Xeon Phis

    • los diseños de CPU se están dividiendo hacia optimizar el rendimiento de un solo núcleo y la eficiencia energética
    • si aumentan los E-cores, podrían ganar los algoritmos que aprovechan el paralelismo
  • sacrificios que hacen posible el alto rendimiento de la GPU

    • existe el sistema de memoria unificada de Apple Silicon
    • la API de programación de GPU obliga a tratar la memoria como si no estuviera unificada