Stencil y ventanas deslizantes
Divida vecindarios en teselas con celdas de halo.
Stencil y ventanas deslizantes es una lección gratuita de CUDA Academy en CoddyKit. Esta es la lección 3 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.
What a Stencil Is
A stencil computes each output from a fixed neighborhood of inputs, like averaging a pixel with the cells around it.
The Sliding Window
As you move along the array, the input window slides by one. Consecutive outputs share most of their inputs, so reuse is huge.
Perfect for Tiling
Because neighbors overlap, a tile loaded once feeds many outputs. Stencils are a textbook case where tiling shines.
Meet the Halo
To compute the edges of a tile you also need a few elements just outside it. Those extra border cells are called the halo.
Why the Halo Exists
The first thread in a tile needs its left neighbor, which belongs to the previous tile. Without halo cells that read goes wrong.
Sizing the Halo
For a radius-r stencil you load r extra cells on each side. A 3-point blur has radius 1, so one halo cell per side suffices.
A Padded Tile
Declare shared memory as blockDim plus 2 * radius so it holds the interior plus both halos in one tidy buffer.
__shared__ float tile[BLOCK + 2 * RADIUS];Loading the Interior
Each thread first loads its own element into the tile at an offset of radius, leaving room for the left halo in front.
tile[threadIdx.x + RADIUS] = in[gid];Loading the Halos
The first few threads do double duty, also fetching the left and right halo cells before the block synchronizes.
Then Sync and Stencil
After __syncthreads, each thread reads its neighbors entirely from the tile, never touching global memory again for that step.
Reuse Multiplier
Every interior value now serves 2r + 1 outputs from one shared-memory load. That is exactly the redundant traffic tiling removes.
Quick Check
Why does a tiled stencil need halo cells?
Recap
Stencils slide overlapping windows, so a halo of r extra cells per side lets a tile serve every output with one load each. ✅
Preguntas frecuentes
¿La lección «Stencil y ventanas deslizantes» es gratis?
Sí — el texto completo de «Stencil y ventanas deslizantes» 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 «Stencil y ventanas deslizantes»?
Divida vecindarios en teselas con celdas de halo. 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 3 de 4.
¿Cuánto tiempo toma la lección «Stencil y ventanas deslizantes»?
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