Computación con GPU y Aceleradores
La computación con GPU y aceleradores aprovecha los procesadores masivamente paralelos de múltiples núcleos para acelerar las cargas de trabajo de datos paralelos mucho más allá de lo que logran las CPU de propósito general.
Definition
La computación con GPU y aceleradores es el uso de procesadores especializados de múltiples núcleos, optimizados para la ejecución de datos paralelos de alto rendimiento, para descargar y acelerar las porciones paralelizadas de un cálculo bajo un modelo de programación host-device.
Scope
Este tema cubre la arquitectura de las unidades de procesamiento gráfico y otros aceleradores como máquinas SIMD/SIMT de múltiples núcleos orientadas al rendimiento; los modelos de programación que las utilizan (CUDA, OpenCL y descarga basada en directivas); las abstracciones de jerarquía de hilos y jerarquía de memoria (hilos, warps, bloques, cuadrículas; memoria global, compartida y de registro); y las consideraciones de rendimiento —ocupación, coalescencia de memoria y divergencia— que rigen el rendimiento alcanzable.
Core questions
- ¿Cómo difiere el modelo de acelerador de múltiples núcleos orientado al rendimiento de una CPU de propósito general?
- ¿Cómo se expresan los cálculos como kernels masivamente paralelos sobre una jerarquía de hilos?
- ¿Qué comportamientos de memoria y ejecución —coalescencia, divergencia, ocupación— limitan el rendimiento alcanzable?
Key theories
- Modelo de ejecución SIMT
- Las GPU ejecutan miles de hilos ligeros agrupados en warps que se ejecutan de forma sincronizada (instrucción única, múltiples hilos); el rendimiento depende de mantener los warps ocupados y evitar la divergencia del flujo de control dentro de un warp.
- Modelo jerárquico de hilos y memoria
- CUDA organiza los hilos en bloques y cuadrículas y expone una jerarquía de memoria de registros, memoria compartida rápida y memoria global grande; mapear datos y cálculos en esta jerarquía es la tarea central de rendimiento.
- Computación GPU de propósito general
- La evolución de las tuberías gráficas de función fija a los aceleradores programables de propósito general convirtió a las GPU en una plataforma principal para la computación científica y de datos intensivos.
Clinical relevance
Los aceleradores son los caballos de batalla de las aplicaciones modernas de computación intensiva: el entrenamiento y la inferencia de aprendizaje profundo, la simulación científica, el procesamiento de imágenes y señales, y la criptografía dependen de las GPU para obtener aceleraciones de órdenes de magnitud sobre las CPU.
History
Las GPU evolucionaron de hardware gráfico de función fija a procesadores paralelos programables; el lanzamiento de CUDA en 2007, descrito por Nickolls y sus colegas en 2008, hizo accesible la computación GPU de propósito general, y los aceleradores se convirtieron posteriormente en un elemento central de la computación de alto rendimiento y el aprendizaje automático.
Key figures
- John Nickolls
- Wen-mei Hwu
- David Kirk
- John Owens
Related topics
Seminal works
- nickolls2008
- kirk2016
- owens2008
Frequently asked questions
- ¿Por qué las GPU son mucho más rápidas que las CPU para algunas cargas de trabajo?
- Las GPU dedican muchos más de sus transistores a unidades aritméticas y ejecutan miles de hilos para ocultar la latencia de la memoria, intercambiando la velocidad de un solo hilo por el rendimiento agregado. Esto las hace excelentes para trabajos regulares y altamente paralelos en datos, aunque poco adecuadas para código con muchas bifurcaciones y sensible a la latencia.