Anatomía de un kernel
Firma, tipo de retorno y la regla de void.
Anatomía de un kernel 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.
Qué es un kernel
Un kernel es una única función de C++ que se ejecuta en la GPU mediante miles de hilos a la vez. Usted la escribe una vez y el hardware la distribuye. 🚀
El marcador __global__
Marque un kernel con el calificador __global__. Esto indica a nvcc que la función se llama desde la CPU, pero se ejecuta realmente en el dispositivo.
__global__ void myKernel() {
// runs on the GPU
}Los kernels devuelven void
Todo kernel debe devolver void. No hay ningún valor de retorno que entregar, así que los resultados salen mediante punteros a la memoria del dispositivo.
__global__ void k() { /* void only */ }¿Por qué no devolver un valor?
Miles de hilos ejecutan el kernel conjuntamente, por lo que un único valor de retorno no tendría sentido. Cada hilo escribe en su propia posición de un array de salida.
Los parámetros se pasan por valor
Los parámetros del kernel se copian en cada hilo, así que pase elementos pequeños: enteros, tamaños y punteros. Nunca pase objetos grandes por valor.
__global__ void add(float* out, float* a, int n) {}Pase punteros, no arrays
Para proporcionar un array a un kernel, pase un puntero al dispositivo. El kernel lee y escribe en la memoria de la GPU a la que apunta ese puntero.
__global__ void scale(float* data, float k) {}Cada hilo elige su trabajo
El mismo código se ejecuta en cada hilo, así que cada uno utiliza su índice para decidir qué elemento debe tocar. Así, una función puede abarcar un array completo.
int i = threadIdx.x; // who am I?Un kernel completo y pequeño
Aquí tiene un kernel completo: duplica un elemento por hilo. Observe el marcador __global__, el retorno void y el parámetro de tipo puntero juntos.
__global__ void doubleIt(float* x) {
int i = threadIdx.x;
x[i] = x[i] * 2.0f;
}El código del host permanece separado
Su función habitual de la CPU, normalmente main, es código del host. Configura todo y después solicita a la GPU que ejecute el kernel.
int main() {
// host side: prepare and launch
}Sin recursión ni sorpresas de E/S
Un kernel se ejecuta en un hardware con reglas estrictas, así que manténgalo sencillo: evite la recursión profunda y las llamadas pesadas a la biblioteca estándar.
Cómo nombrar sus kernels
Trate un kernel como cualquier función: asígnele un nombre claro basado en un verbo, como vectorAdd. Los buenos nombres hacen que los lanzamientos sean mucho más fáciles de leer.
__global__ void vectorAdd(float* c, float* a, float* b);Comprobación rápida
Comprobemos las reglas de la signatura de un kernel.
Resumen: anatomía de un kernel
Un kernel es una función __global__ void ejecutada por muchos hilos. Pase punteros y valores pequeños, y deje que cada hilo use su índice. ¡Muy bien! 🎉
Aprende C++ con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Anatomía de un kernel» es gratis?
Sí — el texto completo de «Anatomía de un kernel» 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 «Anatomía de un kernel»?
Firma, tipo de retorno y la regla de void. 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 «Anatomía de un kernel»?
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
- Anatomía de un kernel
- El lanzamiento con triple ángulo
- printf dentro de un kernel
- Explicación de cudaDeviceSynchronize