El problema de reutilizar datos
Por qué los kernels ingenuos vuelven a leer la memoria global.
El problema de reutilizar datos 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.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
The Hidden Cost
A kernel can be correct yet slow because it keeps fetching the same data from slow global memory over and over. 🐢
Memory Is the Bottleneck
On the GPU, arithmetic is cheap but reaching global memory is expensive. Many kernels wait on memory far more than they compute.
Data Reuse Defined
Data reuse means one value loaded from global memory is used by many computations instead of being read again each time.
A Naive Stencil
Picture blurring an image. Each output pixel averages its neighbors, so every input pixel gets read by several different threads.
out[i] = (in[i-1] + in[i] + in[i+1]) / 3.0f;Counting the Reads
In that blur, the value in[i] is read by threads i-1, i, and i+1. The same byte travels across the slow PCIe-fed bus three times.
Redundancy Adds Up
With a wider window or a 2D grid, each element may be re-read dozens of times. This redundant traffic dominates the runtime.
Bandwidth Is Finite
Global memory has a fixed peak bandwidth. Reading the same data repeatedly wastes that budget on bytes you already had.
Compute Sits Idle
While warps stall waiting on repeated global loads, the math units sit idle. You paid for cores you are barely using. 😴
Arithmetic Intensity
Arithmetic intensity is the ratio of math operations to bytes moved. Low intensity means memory, not compute, limits you.
The Goal: Read Once
The fix is to load each needed value once into fast on-chip storage, then let many threads reuse it from there.
Enter Shared Memory
That fast on-chip storage is shared memory. Staging data there is the foundation of every tiling optimization ahead.
Quick Check
Why is a naive stencil kernel often slow?
Recap
Naive kernels re-read shared data from global memory, wasting bandwidth and stalling compute. Tiling exists to load once and reuse. ✅
Preguntas frecuentes
¿La lección «El problema de reutilizar datos» es gratis?
Sí — el texto completo de «El problema de reutilizar datos» 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 «El problema de reutilizar datos»?
Por qué los kernels ingenuos vuelven a leer la memoria global. 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 «El problema de reutilizar datos»?
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
- El problema de reutilizar datos
- El patrón cargar-sincronizar-calcular
- Stencil y ventanas deslizantes
- Gestionar teselas de los bordes