Eventi per misurazione e sincronizzazione
Utilizzi cudaEvent per misurare e ordinare le attività.
Eventi per misurazione e sincronizzazione è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CUDA Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CUDA Academy include 4 lezioni in totale.
Che cos'è un evento?
Un evento CUDA è un marcatore inserito in uno stream. La GPU registra quando lo raggiunge, permettendo di misurare e ordinare il lavoro. ⏱️
L'handle dell'evento
Gli eventi usano un handle cudaEvent_t, proprio come gli stream. Lo crea, lo registra, lo interroga e lo distrugge quando ha finito di usarlo.
cudaEvent_t start, stop;Creare eventi
Chiami cudaEventCreate per ogni evento necessario. Per la misurazione dei tempi, di solito ne servono due: uno prima del lavoro e uno dopo.
cudaEventCreate(&start);
cudaEventCreate(&stop);Registrare un evento
cudaEventRecord inserisce l'evento in uno stream. La GPU registra il timestamp nel momento in cui termina tutto ciò che era stato accodato prima dell'evento.
cudaEventRecord(start, stream);Misurare il tempo di un kernel
Registri l'inizio, avvii il kernel e poi registri la fine, tutto nello stesso stream. L'intervallo tra i due eventi è il reale tempo di esecuzione sulla GPU.
cudaEventRecord(start, s);
kernel<<<g, b, 0, s>>>(d);
cudaEventRecord(stop, s);Attendere un evento
Gli eventi sono asincroni, quindi l'host deve attendere. cudaEventSynchronize blocca l'esecuzione finché l'evento specificato non è stato effettivamente registrato sulla GPU.
cudaEventSynchronize(stop);Misurare il tempo trascorso
cudaEventElapsedTime restituisce i millisecondi trascorsi tra due eventi registrati. È molto più preciso rispetto a un orologio della CPU lato host.
float ms;
cudaEventElapsedTime(&ms, start, stop);Perché non usare l'orologio della CPU?
I timer dell'host includono l'overhead di avvio e non misurano il tempo reale della GPU. Gli eventi si trovano all'interno dello stream, quindi rilevano esattamente ciò che ha fatto il dispositivo.
Ordinamento tra stream
Gli eventi permettono anche di sincronizzare gli stream. cudaStreamWaitEvent fa sì che uno stream si metta in pausa finché non si verifica un evento registrato in un altro stream.
cudaStreamWaitEvent(streamB, eventA, 0);Costruire dipendenze
Con stream-wait-event si esprime una dipendenza: streamB inizia il proprio lavoro solo dopo che streamA ha raggiunto il suo evento, senza bloccare l'host.
Eliminare gli eventi
Libere gli eventi non più necessari con cudaEventDestroy. Come gli stream, sono economici, ma non devono essere lasciati senza liberare le risorse nelle applicazioni a esecuzione prolungata.
cudaEventDestroy(start);
cudaEventDestroy(stop);Verifica rapida
Quale funzione restituisce il tempo trascorso tra due eventi?
Riepilogo
Gli eventi permettono di misurare con precisione il lavoro della GPU e di ordinare uno stream dopo l'altro. Sono lo strumento per misurare e coordinare la sovrapposizione. 🎯
Impara C++ con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Eventi per misurazione e sincronizzazione» è gratuita?
Sì — il testo completo di «Eventi per misurazione e sincronizzazione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CUDA Academy, passa a CoddyKit PRO. Il corso CUDA Academy include 4 lezioni in totale.
Cosa imparerò in «Eventi per misurazione e sincronizzazione»?
Utilizzi cudaEvent per misurare e ordinare le attività. Eserciti CUDA Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CUDA Academy?
Non è richiesta alcuna esperienza precedente. CUDA Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Eventi per misurazione e sincronizzazione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CUDA Academy?
Sì. Ogni lezione CUDA Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- La trappola dello stream predefinito
- Creare e utilizzare gli stream
- Eventi per misurazione e sincronizzazione
- Sovrapporre copia e calcolo