Registros y memoria local
El almacenamiento más rápido por hilo y sus desbordamientos.
Registros y memoria local es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CUDA Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CUDA Academy incluye 4 lecciones en total.
La memoria más rápida que tiene
Cada hilo obtiene sus propios registros privados, el almacenamiento más rápido del chip. Se encuentran justo al lado de las unidades de cálculo, por lo que leerlos apenas tiene coste.
Las variables normales se convierten en registros
Cuando escribe una variable local normal en un kernel, el compilador normalmente la mantiene en un registro. No hace falta ninguna sintaxis especial. 🙂
__global__ void k() {
int x = 5; // x lives in a register
float y = x * 2.0f;
}Privados de un solo hilo
El valor de un registro pertenece exactamente a un hilo. El hilo 7 no puede ver el registro del hilo 8, por lo que el trabajo de cada hilo permanece claramente separado.
Los registros forman un conjunto compartido
Cada multiprocesador de streaming tiene un archivo de registros de tamaño fijo. Todos los hilos residentes lo comparten, por lo que usar menos registros por hilo permite ejecutar más hilos a la vez.
Cuando se agotan
Si un kernel necesita más registros de los disponibles, los valores adicionales se trasladan a otro lugar. Este evento se denomina desbordamiento de registros.
Adónde van los desbordamientos: memoria local
Los valores desbordados terminan en la memoria local, que, a pesar de su nombre, no está en el chip. En realidad, reside en una DRAM lenta fuera del chip.
La memoria local sigue siendo propia de cada hilo
La memoria local es privada para cada hilo, igual que los registros. La diferencia es únicamente la velocidad, ya que acceder a la memoria local es mucho más lento.
Los arreglos locales grandes provocan desbordamientos
Declarar un arreglo grande por hilo suele obligar a colocarlo en la memoria local, porque sencillamente no hay suficientes registros para contener todos sus elementos.
__global__ void k() {
float buf[64]; // likely lives in local memory
}Los desbordamientos perjudican el rendimiento
Cada desbordamiento convierte un acceso gratuito a un registro en un viaje lento a la DRAM. Reducir la presión sobre los registros es una de las mejoras de optimización más sencillas que puede conseguir.
Cómo consultar la cantidad de registros
Puede pedir al compilador que informe de los registros por hilo. Pase --ptxas-options=-v a nvcc y mostrará el uso de cada kernel.
nvcc --ptxas-options=-v kernel.cuLimitar los registros deliberadamente
El calificador __launch_bounds__ indica al compilador que limite los registros, sacrificando un poco de velocidad por hilo para ejecutar más hilos a la vez.
__global__ void __launch_bounds__(256)
myKernel() { /* ... */ }Comprobación rápida
Ha declarado un arreglo grande por hilo y el rendimiento ha disminuido. ¿Qué ha ocurrido probablemente?
Repaso: rápidos y privados
Ha aprendido que los registros son el almacenamiento más rápido por hilo, que el conjunto disponible es limitado y que el exceso se desborda a la memoria local, que es lenta. Mantenga baja la presión sobre los registros. 🎯
Aprende C++ con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Registros y memoria local» es gratis?
Sí — el texto completo de «Registros y memoria local» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CUDA Academy, actualiza a CoddyKit PRO. El curso de CUDA Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Registros y memoria local»?
El almacenamiento más rápido por hilo y sus desbordamientos. Practicas CUDA Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CUDA Academy?
No se requiere experiencia previa. CUDA Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Registros y memoria local»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CUDA Academy?
Sí. Cada lección de CUDA Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Registros y memoria local
- Ventajas y costes de la memoria global
- Memoria constante y su caché
- Un modelo mental de la jerarquía