0Pricing
CUDA Academy · Leçon

printf dans un noyau

Observez la sortie produite par les threads de l’appareil.

printf dans un noyau est une leçon CUDA Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CUDA Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CUDA Academy comprend 4 leçons au total.

Afficher depuis le GPU

Étonnamment, vous pouvez appeler printf directement dans un noyau. C’est la manière la plus simple d’observer ce que font vos threads. 👀

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

Chaque thread affiche quelque chose

Souvenez-vous que le noyau s’exécute dans chaque thread : une seule ligne printf est donc exécutée une fois par thread. Lancez 256 threads et vous obtenez 256 lignes.

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

Identifier chaque thread

Incluez threadIdx dans votre message afin de distinguer les threads. Sinon, la sortie ne sera qu’un mur de lignes identiques.

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

L’ordre de sortie n’est pas fixe

Les threads s’exécutent en parallèle : l’ordre d’affichage est donc imprévisible. Ne comptez pas sur une arrivée des lignes dans l’ordre des indices.

Les chaînes de format fonctionnent

Le printf du périphérique accepte les spécificateurs de format habituels comme %d, %f et %s. Son fonctionnement ressemble à celui de printf sur l’hôte.

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

La sortie passe par un tampon

La sortie du périphérique est stockée dans un tampon du GPU, puis envoyée plus tard vers votre console, et non au moment exact où printf s’exécute. C’est normal.

Vous devez attendre pour la voir

Comme le lancement est asynchrone, les affichages n’apparaissent qu’une fois le GPU terminé. Appelez cudaDeviceSynchronize pour vider le tampon.

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

Limiter les affichages intensifs

Afficher des messages depuis des millions de threads surcharge le tampon. Ajoutez une condition pour que seul le thread 0, ou seulement quelques threads, affichent quelque chose.

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

Idéal pour un débogage rapide

printf est votre outil de débogage le plus rapide : ajoutez-en un pour vérifier un indice ou une valeur, confirmez le problème, puis supprimez-le.

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

Cela ralentit les noyaux

Des affichages intensifs nuisent fortement aux performances. Utilisez-les pour trouver un problème, puis supprimez-les avant de mesurer la vitesse réelle.

Les anciens GPU peuvent se comporter différemment

Le printf du périphérique nécessite une capacité de calcul relativement moderne (2.0 ou supérieure). Presque tous les GPU actuels le prennent correctement en charge.

Vérification rapide

Vérifiez ce que vous savez sur printf sur le périphérique.

Récapitulatif : printf dans un noyau

Utilisez printf pour observer les threads, ajoutez threadIdx pour les distinguer, synchronisez pour vider le tampon et supprimez-le avant de mesurer le temps. Un outil bien pratique ! 🎉

Questions Fréquemment Posées

La leçon « printf dans un noyau » est-elle gratuite ?

Oui — le texte complet de « printf dans un noyau » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CUDA Academy, passe à CoddyKit PRO. Le cours CUDA Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « printf dans un noyau » ?

Observez la sortie produite par les threads de l’appareil. Tu pratiques CUDA Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer CUDA Academy ?

Aucune expérience préalable n'est requise. CUDA Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « printf dans un noyau » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon CUDA Academy ?

Oui. Chaque leçon CUDA Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Anatomie d’un noyau
  2. Le lancement entre triples chevrons
  3. printf dans un noyau
  4. cudaDeviceSynchronize expliqué
← Retour à CUDA Academy