Lección 13: La jerarquía de memoria
Una GPU tiene varios tipos de memoria que difieren en velocidad, alcance y tiempo de vida. Los registros son la memoria más rápida: toda variable local simple en un kernel vive en un registro, privado de un solo hilo y existe solo mientras el hilo corre. La memoria compartida, declarada con __shared
Piensa en una cocina: los registros son tus manos — lo más rápido, pero solo tuyas y solo por un momento. La memoria compartida es la mesada compartida de un equipo en la cocina — rápida y alcanzable por todo el equipo, pero no por un equipo de otra cocina. La memoria global es el refrigerador gigante del almacén — enorme y sirve a todos, pero caminar hasta ahí es lento. La memoria constante es el pizarrón de la receta en la pared que todos leen pero nadie cambia.
- registros
- La memoria más rápida, privada de un solo hilo. Toda variable local simple en un kernel vive aquí y existe solo mientras el hilo corre.
- memoria compartida
- Memoria en el chip declarada con __shared__, compartida por todos los hilos del mismo bloque. Mucho más rápida que la global, pero no cruza entre bloques.
- memoria global
- La DRAM del device: grande, lenta, accesible por todo el grid y persiste entre lanzamientos. Aquí se copian los datos desde el host.
- memoria constante
- Memoria de solo lectura declarada con __constant__ y en caché. Excelente cuando todos los hilos leen el mismo valor.