Verificare la correttezza numerica
Confronti i risultati con un riferimento.
Verificare la correttezza numerica è una lezione Mojo 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 Mojo Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Mojo Academy include 4 lezioni in totale.
Veloce ma sbagliato è inutile
Un kernel ottimizzato conta solo se calcola il risultato corretto. Verificate sempre prima di fidarvi di un aumento di velocità.
Conservate un riferimento
Conservate la versione semplice e chiaramente corretta. È il vostro riferimento, la fonte di verità a cui ogni kernel veloce deve corrispondere.
I float non sono esatti
I calcoli in virgola mobile comportano arrotondamenti, quindi riordinare le somme può modificare le ultime cifre. I risultati ottimizzati possono differire leggermente senza essere sbagliati.
Evitate l'uguaglianza esatta
A causa degli arrotondamenti, non confrontate mai i float con ==. Differenze minime farebbero sembrare errato il codice corretto.
if fast == ref: # fragile, avoidConfrontate con una tolleranza
Controllate invece che i valori siano abbastanza vicini entro una piccola tolleranza. Se la differenza è inferiore a epsilon, considerateli uguali.
if abs(fast - ref) <= 1e-5:
pass # close enoughErrore assoluto e relativo
L'errore assoluto è la differenza grezza; l'errore relativo la rapporta alla grandezza del valore. Per i numeri grandi servono controlli relativi per mantenere il confronto equo.
rel = abs(fast - ref) / abs(ref)Controllate ogni elemento
Scorrete l'intero risultato e verificate ogni cella. Una sola discordanza oltre la tolleranza indica che l'ottimizzazione ha introdotto un problema.
for i in range(n):
if abs(fast[i] - ref[i]) > tol:
print("mismatch at", i)Rilevate la differenza peggiore
Registrate la differenza maggiore osservata. L'errore massimo tra tutti gli elementi è un indicatore unico e chiaro dello stato del kernel.
Verificate i casi limite
Provate input vuoti, un singolo elemento e dimensioni dispari che non siano divisibili per la larghezza SIMD. I casi limite fanno emergere rapidamente i bug della coda.
Usate risultati noti
Moltiplicate per la matrice identità oppure sommate un vettore di uno. Input prevedibili producono risultati che potete verificare a mano.
Automatizzate il controllo
Racchiudete la verifica in un piccolo test che segnali chiaramente ogni discordanza. Eseguitelo dopo ogni modifica, così le regressioni non passeranno inosservate.
Controllo rapido
Il vostro matmul SIMD differisce dal riferimento di 0.0000007. Che cosa dovreste concludere?
Riepilogo
Verificate il codice veloce rispetto a un riferimento affidabile, confrontate con una tolleranza anziché usare ==, controllate i casi limite e i risultati noti, quindi automatizzate il tutto. ✅
Impara Mojo 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 la correttezza numerica» è gratuita?
Sì — il testo completo di «Verificare la correttezza numerica» è 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 Mojo Academy, passa a CoddyKit PRO. Il corso Mojo Academy include 4 lezioni in totale.
Cosa imparerò in «Verificare la correttezza numerica»?
Confronti i risultati con un riferimento. Eserciti Mojo 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 Mojo Academy?
Non è richiesta alcuna esperienza precedente. Mojo 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 «Verificare la correttezza numerica»?
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 Mojo Academy?
Sì. Ogni lezione Mojo 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
- Modellare un tensore in Mojo
- Costruire una matmul passo dopo passo
- Ottimizzare il prodotto scalare
- Verificare la correttezza numerica