0Pricing
CUDA Academy · Lección

printf dentro de un kernel

Vea la salida de los hilos del dispositivo.

printf dentro de un kernel 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.

Imprimir desde la GPU

Aunque parezca increíble, puede llamar a printf directamente dentro de un kernel. Es la forma más sencilla de observar qué hacen sus hilos. 👀

__global__ void hi() {
    printf("Hello from the GPU\n");
}

Cada hilo imprime

Recuerde que el kernel se ejecuta en cada hilo, así que una sola línea de printf se ejecuta una vez por hilo. Si lanza 256 hilos, obtendrá 256 líneas.

hi<<<1, 256>>>(); // 256 hellos

Identifique cada hilo

Incluya threadIdx en el mensaje para poder distinguir los hilos. De lo contrario, la salida será una pared de líneas idénticas.

printf("thread %d\n", threadIdx.x);

El orden de salida no es fijo

Los hilos se ejecutan en paralelo, por lo que el orden de impresión es impredecible. No dependa de que las líneas lleguen en la secuencia de los índices.

Funcionan las cadenas de formato

El printf del dispositivo admite los especificadores de formato habituales, como %d, %f y %s. Funciona igual que el printf del host.

printf("i=%d val=%f\n", i, x[i]);

La salida va a un búfer

La salida del dispositivo se almacena temporalmente en un búfer de la GPU y se envía más tarde a la consola, no en el instante en que se ejecuta printf. Es normal.

Debe esperar para verla

Como el lanzamiento es asíncrono, no verá las impresiones hasta que la GPU termine. Llame a cudaDeviceSynchronize para vaciar el búfer.

hi<<<1, 4>>>();
cudaDeviceSynchronize();

Limite la impresión intensiva

Imprimir desde millones de hilos desborda el búfer. Añada una condición para que solo imprima el hilo 0 o unos pocos hilos.

if (threadIdx.x == 0) printf("block done\n");

Ideal para depurar rápidamente

printf es su herramienta de depuración más rápida: añada una llamada para comprobar un índice o un valor, confirme el error y elimínela.

printf("i=%d should be < n=%d\n", i, n);

Ralentiza los kernels

Imprimir demasiado perjudica mucho el rendimiento. Utilícelo para encontrar un problema y elimínelo antes de medir la velocidad real.

Las GPU antiguas pueden variar

El printf del dispositivo necesita una capacidad de cómputo razonablemente moderna (2.0 o superior). Casi todas las GPU actuales lo admiten sin problemas.

Comprobación rápida

Compruebe cuánto sabe sobre el printf del dispositivo.

Resumen: printf del kernel

Use printf para observar el interior de los hilos, añada threadIdx para distinguirlos, sincronice para vaciar el búfer y elimínelo antes de medir tiempos. ¡Una herramienta muy útil! 🎉

Preguntas frecuentes

¿La lección «printf dentro de un kernel» es gratis?

Sí — el texto completo de «printf dentro 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 «printf dentro de un kernel»?

Vea la salida de los hilos del dispositivo. 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 «printf dentro 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

  1. Anatomía de un kernel
  2. El lanzamiento con triple ángulo
  3. printf dentro de un kernel
  4. Explicación de cudaDeviceSynchronize
← Volver a CUDA Academy