Diseño de la canalización de procesamiento
Etapas, búferes y flujo de datos
Diseño de la canalización de procesamiento 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.
Think in Stages
A real image pipeline is a chain of stages: load, blur, sharpen, color-correct, save. Each stage is one clear transformation you can reason about alone. 🧩
Data Flows One Way
Pixels move forward through the pipeline: each stage reads the previous output and produces the next input. This one-way data flow keeps the design simple to follow.
Buffers Hold the In-Between
Between two stages you need a place to park pixels. A buffer is just a device array that one kernel writes and the next kernel reads. Plan a buffer per boundary.
float* d_stage1;
cudaMalloc(&d_stage1, width * height * sizeof(float));Ping-Pong Two Buffers
You rarely need a fresh buffer per stage. Ping-pong between two buffers: read from one, write to the other, then swap. Two buffers serve a whole chain.
std::swap(d_in, d_out);One Kernel Per Stage, For Now
Start with one kernel per stage. It is the clearest design and the easiest to verify. You will fuse stages later once each one is correct.
Map Pixels to Threads
The natural mapping is one thread per pixel. A 2D grid covers width and height, so each thread owns exactly one (x, y) location to process.
int x = blockIdx.x * blockDim.x + threadIdx.x;
int y = blockIdx.y * blockDim.y + threadIdx.y;Index With Row Pitch
Images are stored row by row. Turn (x, y) into a flat offset with row-major indexing so every thread reads the right pixel.
int idx = y * width + x;Guard the Image Borders
Your grid is rounded up, so some threads fall outside the image. A simple bounds check keeps them from touching memory they should not.
if (x >= width || y >= height) return;Choose a 2D Block Shape
A block like 16x16 or 32x8 gives good coverage and warp-friendly rows. Pick a 2D block shape that divides the image cleanly when you can.
dim3 block(16, 16);
dim3 grid((width+15)/16, (height+15)/16);Allocate Once, Reuse Often
Allocating device memory is costly, so do it once before the loop. Reuse the same buffers for every frame instead of malloc and free each time.
Sketch Before You Code
Draw the stages, their buffers, and the arrows between them first. A clear diagram of data flow catches design mistakes long before any kernel runs. ✏️
Quick Check
You have a chain of stages. How do you avoid allocating a new buffer for every stage?
Recap
You designed a pipeline as one-way stages joined by buffers, mapped one thread per pixel with a 2D grid, and learned to ping-pong buffers and sketch the flow first. 🎯
Preguntas frecuentes
¿La lección «Diseño de la canalización de procesamiento» es gratis?
Sí — el texto completo de «Diseño de la canalización de procesamiento» 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 «Diseño de la canalización de procesamiento»?
Etapas, búferes y flujo de datos 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 «Diseño de la canalización de procesamiento»?
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
- Diseño de la canalización de procesamiento
- Fusión de filtros en un solo kernel
- Procesamiento por bloques para imágenes grandes
- Perfilar, optimizar y publicar