Verificare il risultato sulla CPU
Confronti il risultato con un riferimento.
Verificare il risultato sulla CPU è 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.
Fidarsi, ma verificare
Un kernel che viene eseguito senza arrestarsi in modo anomalo non dimostra di essere corretto. Deve verificare i numeri, perché gli errori logici silenziosi sono facili da non notare. 🔍
Calcolare un riferimento
Il controllo più semplice consiste in un normale ciclo CPU che esegue gli stessi calcoli. Questo risultato di riferimento è la fonte affidabile con cui confrontarsi.
for (int i = 0; i < n; i++)
ref[i] = h_A[i] + h_B[i];Confrontare elemento per elemento
Scorra entrambi gli array e confronti ogni risultato della GPU con il riferimento. Un ciclo su tutti gli elementi n individua qualsiasi valore errato.
for (int i = 0; i < n; i++)
if (h_C[i] != ref[i]) { /* mismatch */ }I numeri in virgola mobile non sono esatti
Con i numeri in virgola mobile, non esegua mai un test usando la semplice uguaglianza. Le piccole differenze di arrotondamento richiedono invece un confronto con una piccola tolleranza.
if (fabs(h_C[i] - ref[i]) > 1e-5f) { /* fail */ }Perché usare la tolleranza invece dell’uguaglianza
GPU e CPU potrebbero arrotondare in ordini diversi, quindi i risultati possono differire di pochissimo. Un piccolo epsilon come 1e-5 assorbe questo errore innocuo.
Contare gli errori
Anziché interrompersi alla prima differenza, tenga traccia del conteggio degli errori. Sapere quanti elementi non coincidono suggerisce il tipo di bug presente.
int errors = 0;
if (fabs(h_C[i] - ref[i]) > 1e-5f) errors++;Stampare un verdetto chiaro
Concluda con un unico messaggio sincero. Una riga chiara con PASS o FAIL evita di dover esaminare attentamente gli array grezzi.
printf(errors == 0 ? "PASS\n" : "FAIL: %d\n", errors);Controllare rapidamente i bordi
I bug nei limiti colpiscono spesso il primo e l’ultimo elemento. Stampare C[0] e C[n-1] offre un rapido controllo preliminare prima del ciclo completo.
Un indizio di errore di uno
Se è errato esattamente l’elemento ultimo, sospetti un errore nel calcolo dei limiti. Un conteggio errato dei blocchi o una condizione di controllo può spesso escludere l’ultimo thread.
Verificare prima di ottimizzare
Confermi sempre la correttezza prima di ottimizzare la velocità. Un kernel rapido che restituisce risposte errate è peggiore di uno lento ma corretto.
Mantenere il controllo
Durante lo sviluppo, lasci attivo il passaggio di verifica. È il suo test di regressione, che rileva gli errori non appena modifica il kernel.
Controllo rapido
Come deve confrontare i risultati GPU in virgola mobile con un riferimento CPU?
Riepilogo
Ha verificato il risultato: un riferimento CPU, un confronto con tolleranza, un conteggio degli errori e un PASS o FAIL chiaro. Prima di tutto, sempre la correttezza. ✅
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 «Verificare il risultato sulla CPU» è gratuita?
Sì — il testo completo di «Verificare il risultato sulla CPU» è 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 «Verificare il risultato sulla CPU»?
Confronti il risultato con un riferimento. 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 «Verificare il risultato sulla CPU»?
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
- Il kernel di somma di vettori
- Collegare il lato host
- Verificare il risultato sulla CPU
- Misurare il primo incremento di velocità