Arquitectura de GPU
Una unidad de procesamiento gráfico (GPU) es un procesador masivamente paralelo y orientado al rendimiento, construido a partir de muchos núcleos simples que ejecutan miles de hilos para ocultar la latencia de la memoria, originalmente para gráficos y ahora ampliamente utilizado para la computación de propósito general y el aprendizaje automático.
Definition
Una arquitectura de GPU es un diseño de procesador altamente paralelo compuesto por muchos núcleos ligeros agrupados en multiprocesadores que ejecutan un gran número de hilos en grupos sincronizados, optimizado para un alto rendimiento aritmético y ocultamiento de latencia en lugar de la velocidad de un solo hilo.
Scope
Este tema cubre la organización del hardware de la GPU: multiprocesadores de flujo, el modelo de ejecución de una sola instrucción, múltiples hilos (SIMT), warps y bloques de hilos, la jerarquía de memoria de registros, memoria compartida y memoria global, y cómo las GPU ocultan la latencia a través del multihilo masivo. Trata las GPU como arquitectura paralela. Excluye las extensiones SIMD de la CPU (SIMD y procesadores vectoriales) y los marcos de software para programar GPU más allá de las implicaciones arquitectónicas.
Core questions
- ¿Cómo logran las GPU un alto rendimiento con muchos núcleos simples en lugar de pocos complejos?
- ¿Qué es el modelo de ejecución de una sola instrucción, múltiples hilos y cómo funcionan los warps?
- ¿Cómo oculta el multihilo masivo la latencia de la memoria?
- ¿Cómo se organiza la jerarquía de memoria de la GPU para cargas de trabajo paralelas?
Key concepts
- multiprocesador de flujo
- una sola instrucción, múltiples hilos (SIMT)
- warps y bloques de hilos
- multihilo masivo
- ocultamiento de latencia
- memoria compartida, global y de registro
- coalescencia de memoria
- diseño orientado al rendimiento
Key theories
- Ocultamiento de latencia a través del multihilo masivo
- En lugar de minimizar la latencia para un solo hilo, una GPU mantiene miles de hilos en ejecución y cambia entre grupos listos cada vez que algunos se detienen en la memoria, por lo que la abundante paralelización mantiene ocupadas las muchas unidades aritméticas y oculta los largos retrasos de la memoria.
Mechanisms
Una GPU comprende muchos multiprocesadores de flujo, cada uno ejecutando grupos de hilos (warps) de forma sincronizada bajo el modelo SIMT. Los hilos se organizan en bloques que comparten memoria rápida en el chip y se sincronizan localmente. El hardware programa muchos warps y cambia entre ellos con una sobrecarga casi nula, de modo que cuando un warp espera en la memoria, otro se ejecuta, manteniendo las unidades aritméticas ocupadas; los patrones de acceso a memoria coalescentes maximizan la utilización del ancho de banda.
Clinical relevance
Las GPU se han vuelto centrales para la computación de alto rendimiento y la inteligencia artificial: su diseño orientado al rendimiento las convierte en la plataforma dominante para entrenar y ejecutar redes neuronales profundas, así como para la simulación científica y el análisis de datos. Su arquitectura recompensa los algoritmos de datos paralelos y el acceso a memoria coalescente, lo que da forma a cómo se escribe el software crítico para el rendimiento.
History
Las GPU evolucionaron de pipelines gráficos de función fija en la década de 1990 a sombreadores programables y luego a procesadores de múltiples núcleos completamente programables. La introducción de marcos de computación de GPU de propósito general a finales de la década de 2000 las abrió a cargas de trabajo científicas y de datos, y su rendimiento las convirtió en el motor de la era del aprendizaje profundo a partir de la década de 2010.
Debates
- Generalidad de la GPU frente a aceleradores especializados
- Las GPU son motores de rendimiento flexibles, pero los aceleradores cada vez más especializados (como las unidades de tensor y matriz) ofrecen una mayor eficiencia para cargas de trabajo específicas; los diseñadores sopesan la programabilidad de la GPU y su amplia aplicabilidad frente a la eficiencia del hardware dedicado.
Key figures
- David B. Kirk
- Wen-mei Hwu
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- kirk2016
Frequently asked questions
- ¿Por qué las GPU son tan buenas para el aprendizaje profundo?
- El entrenamiento y la ejecución de redes neuronales consisten en gran medida en operaciones densas de matrices y tensores con abundante paralelismo de datos. Los muchos núcleos de una GPU y su alto ancho de banda de memoria ejecutan estas operaciones con un rendimiento muy alto, superando con creces a las CPU de propósito general en cargas de trabajo tan regulares y paralelas.
- ¿Qué es un warp en la ejecución de GPU?
- Un warp es un grupo de hilos (comúnmente 32) que ejecutan la misma instrucción de forma sincronizada bajo el modelo SIMT. Agrupar hilos en warps permite que el hardware amortice el control de instrucciones en muchos elementos de datos, aunque las ramas divergentes dentro de un warp reducen la eficiencia.