Lección 8: El cuello de botella — Limitado por cómputo vs. limitado por memoria
Antes de optimizar — te preguntas: ¿qué es lo que realmente frena las cosas? Todo kernel está limitado por cómputo (limitado por los FLOPs, la GPU calculando a toda potencia) o limitado por memoria (limitado por el ancho de banda de memoria, la GPU esperando datos). Optimizar sin este diagnóstico es
Limitado por cómputo es un chef rápido que espera porque no hay suficientes hornos — el cuello de botella es el trabajo en sí. Limitado por memoria son hornos libres pero los ingredientes que no llegan del almacén lo bastante rápido — el cuello de botella es el transporte. Cada problema necesita una solución distinta.
- Limitado por cómputo (compute-bound)
- El kernel está limitado por el cómputo (FLOPs). La GPU está completamente ocupada; para acelerar — menor precisión o mejores kernels.
- Limitado por memoria (memory-bound)
- El kernel está limitado por el ancho de banda de memoria. La GPU espera datos; para acelerar — fusión y menos tráfico de memoria.
- Intensidad aritmética
- La proporción de FLOPs por byte leído/escrito. Baja → limitado por memoria; alta → limitado por cómputo.