Événements pour le chronométrage et la synchronisation
Utilisez cudaEvent pour mesurer et ordonner le travail.
Événements pour le chronométrage et la synchronisation 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.
Qu’est-ce qu’un événement ?
Un événement CUDA est un marqueur que vous placez dans un flux. Le GPU enregistre le moment où il l’atteint, ce qui vous permet de mesurer et d’ordonner les tâches. ⏱️
Le descripteur d’événement
Les événements utilisent un descripteur cudaEvent_t, tout comme les flux. Vous le créez, l’enregistrez, l’interrogez, puis le détruisez lorsque vous avez terminé.
cudaEvent_t start, stop;Créer des événements
Appelez cudaEventCreate pour chaque événement dont vous avez besoin. Pour mesurer une durée, il en faut généralement deux : un avant la tâche et un après.
cudaEventCreate(&start);
cudaEventCreate(&stop);Enregistrer un événement
cudaEventRecord place l’événement dans un flux. Le GPU l’horodate dès qu’il a terminé tout ce qui était précédemment en file.
cudaEventRecord(start, stream);Mesurer la durée d’un noyau
Enregistrez le début, lancez votre noyau, puis enregistrez la fin, le tout dans le même flux. L’intervalle entre les deux correspond au véritable temps d’exécution du GPU.
cudaEventRecord(start, s);
kernel<<<g, b, 0, s>>>(d);
cudaEventRecord(stop, s);Attendre un événement
Les événements sont asynchrones : l’hôte doit donc attendre. cudaEventSynchronize bloque jusqu’à ce que l’événement donné ait effectivement été enregistré sur le GPU.
cudaEventSynchronize(stop);Mesurer le temps écoulé
cudaEventElapsedTime renvoie le nombre de millisecondes entre deux événements enregistrés. Cette mesure est bien plus précise qu’une horloge CPU côté hôte.
float ms;
cudaEventElapsedTime(&ms, start, stop);Pourquoi ne pas utiliser l’horloge du CPU ?
Les minuteurs de l’hôte incluent le coût du lancement et ne mesurent pas précisément le temps du GPU. Les événements se trouvent dans le flux et capturent donc exactement ce que le périphérique a exécuté.
Ordonner entre plusieurs flux
Les événements permettent également de synchroniser les flux. cudaStreamWaitEvent fait attendre un flux jusqu’à ce qu’un événement enregistré dans un autre flux se soit produit.
cudaStreamWaitEvent(streamB, eventA, 0);Construire des dépendances
Avec l’attente d’un événement dans un flux, vous exprimez une dépendance : streamB ne commence sa tâche qu’après que streamA a atteint son événement, sans bloquer l’hôte.
Nettoyer les événements
Libérez les événements devenus inutiles avec cudaEventDestroy. Comme les flux, ils sont peu coûteux, mais ne doivent pas être laissés en mémoire dans les applications de longue durée.
cudaEventDestroy(start);
cudaEventDestroy(stop);Vérification rapide
Quelle fonction vous donne le temps écoulé entre deux événements ?
Récapitulatif
Les événements vous permettent de mesurer précisément les tâches du GPU et d’ordonner un flux après un autre. Ils servent à mesurer et à coordonner le chevauchement. 🎯
Apprends C++ avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 30
- Leçons
- 120
Questions Fréquemment Posées
La leçon « Événements pour le chronométrage et la synchronisation » est-elle gratuite ?
Oui — le texte complet de « Événements pour le chronométrage et la synchronisation » 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 « Événements pour le chronométrage et la synchronisation » ?
Utilisez cudaEvent pour mesurer et ordonner le travail. 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 « Événements pour le chronométrage et la synchronisation » ?
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
- Le piège du flux par défaut
- Créer et utiliser des flux
- Événements pour le chronométrage et la synchronisation
- Superposer copie et calcul