Lección 19: Memoria constante y registros
Dos tipos rápidos de memoria ocupan los dos extremos de la jerarquía. En un extremo están los registros: la memoria más rápida, privada de cada hilo. Toda variable local simple dentro de un kernel (por ejemplo un acumulador sum) vive en un registro, y acceder a ella es casi gratis. Pero hay un númer
Un registro es una libreta personal en el bolsillo de cada trabajador — la más rápida, pero si escribes demasiado en ella, tienes que guardar páginas en un depósito lejano (eso es el desbordamiento). La memoria constante es un solo tablón de anuncios del que todos leen: si todos miran el mismo aviso, se puede leer en voz alta una sola vez para todos.
- registros
- La memoria más rápida, privada de cada hilo. Ahí viven las variables locales simples. Su cantidad está limitada por SM.
- desbordamiento de registros (register spilling)
- Cuando un kernel necesita más registros de los disponibles, el excedente se guarda en memoria local, que en realidad vive en la DRAM global lenta — una penalización de rendimiento.
- memoria constante
- Una región pequeña (64KB) de solo lectura desde el kernel, declarada con __constant__ y escrita desde el host. Tiene una caché dedicada.
- broadcast desde memoria constante
- Cuando todos los hilos de un warp leen el mismo valor de la memoria constante, la lectura se transmite (broadcast) desde la caché en un solo paso — tan rápido como un registro.