Lección 3: Tu primer kernel — __global__ y <<<>>>
Hasta ahora la GPU ha sido una idea — miles de trabajadores diminutos esperando una tarea; ahora les damos su primer trabajo. El código que ejecuta cada trabajador de la GPU se llama kernel: una pequeña función que todos los hilos ejecutan juntos, cada uno sobre su propio dato. Se marca con la palab
Un kernel es como una receta que clavas en el tablón de anuncios de una cocina gigante. Tú (la CPU) no cocinas — solo clavas la receta y gritas <<<2 mesas, 4 cocineros>>>. Los ocho cocineros empiezan a trabajar, y tú te vas a hacer otra cosa sin esperar a que terminen.
- __global__
- Marca un kernel: una función que corre en la GPU y se lanza desde la CPU. Siempre devuelve void.
- configuración de lanzamiento <<<>>>
- La sintaxis kernel<<<numBlocks, threadsPerBlock>>>(args) que define cuántos bloques y cuántos hilos por bloque.
- grid y block
- Un block es un grupo de hilos; un grid es el conjunto de bloques de un lanzamiento. Total de hilos = numBlocks por threadsPerBlock.
- lanzamiento asíncrono
- La CPU no espera a que el kernel termine; continúa de inmediato. Se necesita sincronización explícita antes de leer los resultados.