La idea del árbol de reducción
Reduzca a la mitad los hilos activos en cada paso.
La idea del árbol de reducción 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.
What Reduction Means
A reduction collapses a whole array into one value, like summing every element down to a single total. It is one of the most common GPU patterns. 🌳
The Sequential Way Is Slow
On a CPU you add elements one after another. That is O(n) sequential steps, so a million numbers means a million dependent additions in a row.
Addition Is Associative
The trick is that addition is associative: (a+b)+c equals a+(b+c). So you are free to add pairs in any grouping you like.
Add in Parallel Pairs
Because grouping is free, you can add many independent pairs at the same time. Every thread handles one pair, all in a single parallel step.
Halving Each Step
After one pass, half the elements are gone. Repeat, and the active count keeps halving: 8 to 4 to 2 to 1.
Logarithmic Depth
Halving means you finish in log2(n) steps instead of n. A million elements collapses in about 20 steps, not a million.
Picture the Tree
Drawing the pairings makes a binary tree. Leaves are the inputs, each level halves the nodes, and the root is your final sum.
Stride Doubles Each Pass
One way to code it: each step a thread adds its neighbor at distance stride, and that stride doubles every pass through the data.
for (int s = 1; s < blockDim.x; s *= 2) {
if (tid % (2 * s) == 0)
data[tid] += data[tid + s];
__syncthreads();
}Sync Between Steps
Every level depends on the previous one finishing, so threads must wait at a barrier before reading their partner's result.
Work Versus Span
Total additions stay about n, the work. But the longest dependency chain, the span, shrinks to log2(n). Same work, far less waiting.
Not Just Summing
The same tree works for any associative operation: max, min, product, or logical AND. Swap the operator and the structure stays.
Quick Check
Think about how many parallel steps a tree reduction needs.
Recap
You learned the reduction tree: add pairs in parallel, halve each step, finish in log2(n). It works for any associative operator. Next, keep warps busy! 🎉
Preguntas frecuentes
¿La lección «La idea del árbol de reducción» es gratis?
Sí — el texto completo de «La idea del árbol de reducción» 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 «La idea del árbol de reducción»?
Reduzca a la mitad los hilos activos en cada paso. 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 «La idea del árbol de reducción»?
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
- La idea del árbol de reducción
- Eliminar la divergencia de warps
- Direccionamiento secuencial
- Reducción final en varios bloques