CUDA Academy · Lezione

Misurare l'incremento di velocità

Confronti le prestazioni dell'approccio ingenuo e di quello a tile.

Lezione 4 di 413 passaggi

Misurare l'incremento di velocità è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 4 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.

Dimostrare il vantaggio

Ha costruito un kernel con tiling, ma quanto è realmente più veloce? La misurazione trasforma un’ipotesi in un numero di cui può fidarsi. 📊

Misurare il tempo sull’orologio della GPU

Usi gli eventi CUDA per cronometrare i kernel. Risiedono nello stream della GPU e misurano esattamente quando inizia e termina il lavoro.

cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);

Delimitare il kernel

Registri un evento prima del lancio e un altro dopo, quindi si sincronizzi affinché la misurazione attenda effettivamente il completamento della GPU.

cudaEventRecord(start);
matmul<<<g,b>>>(...);
cudaEventRecord(stop);
cudaEventSynchronize(stop);

Leggere il tempo trascorso

Richieda l’intervallo tra gli eventi in millisecondi. Questo singolo numero è il tempo di esecuzione misurato del kernel.

float ms;
cudaEventElapsedTime(&ms, start, stop);

Eseguire prima il riscaldamento

Il primo lancio sostiene costi di configurazione una tantum. Esegua un kernel di warm-up prima della misurazione, così misura la velocità a regime e non quella di avvio.

Calcolare la media di più esecuzioni

Un solo campione è rumoroso. Cronometri il kernel più volte e calcoli la media per ottenere un risultato stabile e affidabile.

Calcolare lo speedup

Lo speedup è semplicemente il tempo ingenuo diviso per il tempo con tiling. Un valore di 4x significa che il kernel con tiling è stato eseguito quattro volte più velocemente.

float speedup = naive_ms / tiled_ms;

Ragionare in GFLOPS

Il matmul esegue circa 2 * N^3 operazioni in virgola mobile. Divida questo valore per il tempo per esprimere le prestazioni in GFLOPS, l’unità di misura standard.

double gflops = (2.0*N*N*N) / (ms * 1e6);

Perché il tiling è vantaggioso

Lo speedup deriva dalla forte riduzione del traffico verso la memoria globale. Il riutilizzo della memoria condivisa mantiene occupati i core invece di lasciarli in attesa di caricamenti lenti.

Verificare sempre la correttezza

Un risultato errato, anche se veloce, è inutile. Confronti il risultato della GPU con un riferimento CPU prima di festeggiare lo speedup. ✅

Conoscere il proprio limite

Anche il matmul con tiling è più lento di cuBLAS ottimizzato manualmente. Conoscere questa differenza indica quando ottimizzare ulteriormente e quando usare una libreria.

Verifica rapida

Ricordi lo strumento corretto per cronometrare i kernel GPU.

Riepilogo

Ha usato gli eventi CUDA per cronometrare, ha eseguito il warm-up, calcolato medie, speedup e GFLOPS e verificato la correttezza. Ora può dimostrare l’efficacia delle sue ottimizzazioni. 🏁

Gratis per iniziare

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 «Misurare l'incremento di velocità» è gratuita?

Sì — il testo completo di «Misurare l'incremento di velocità» è 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 «Misurare l'incremento di velocità»?

Confronti le prestazioni dell'approccio ingenuo e di quello a tile. 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 4 di 4.

Quanto tempo richiede la lezione «Misurare l'incremento di velocità»?

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

  1. Il kernel matmul ingenuo
  2. Suddividere il prodotto interno in tile
  3. Iterare sulle fasi dei tile
  4. Misurare l'incremento di velocità
← Torna a CUDA Academy