0Pricing
CUDA Academy · Lezione

Una macro CUDA_CHECK riutilizzabile

Racchiuda ogni chiamata per maggiore sicurezza.

Una macro CUDA_CHECK riutilizzabile è 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.

Controllare ogni chiamata è seccante

Scrivere un’istruzione if dopo ogni chiamata CUDA ingombra rapidamente il codice. Una macro riutilizzabile CUDA_CHECK risolve il problema con una sola riga ordinata. 🧹

Lo scopo della macro

Vuole racchiudere qualsiasi chiamata, acquisirne il codice di ritorno e interrompere chiaramente l’esecuzione se fallisce. Una macro può farlo ovunque.

CUDA_CHECK(cudaMalloc(&d, n));

Acquisire il risultato

Al suo interno, la macro memorizza il risultato della chiamata in un cudaError_t locale, così può esaminarlo una sola volta senza eseguire la chiamata due volte.

cudaError_t e = (call);

Confrontare con il successo

Successivamente confronta il codice con cudaSuccess. Se coincidono, non accade nulla e il programma prosegue normalmente.

if (e != cudaSuccess) { /* report */ }

Stampare il punto dell’errore

In caso di errore stampa un messaggio leggibile usando __FILE__ e __LINE__, così può passare direttamente alla riga responsabile.

printf("CUDA error %s at %s:%d\n", msg, __FILE__, __LINE__);

Il trucco di do-while(0)

Il corpo è racchiuso in un do-while(0). In questo modo la macro diventa una singola istruzione, sicura anche all’interno di un if senza parentesi graffe.

#define CUDA_CHECK(c) do { /* ... */ } while(0)

Un esempio completo di macro

Mettendo tutto insieme, ottiene una compatta e riutilizzabile rete di sicurezza da inserire nell’header di qualsiasi progetto CUDA.

#define CUDA_CHECK(c) do { cudaError_t e=(c); if(e) exit(1); } while(0)

Racchiudere le chiamate API

La usi con qualsiasi chiamata che restituisce un codice: cudaMalloc, cudaMemcpy, cudaFree. Un unico involucro le protegge tutte in modo uniforme.

CUDA_CHECK(cudaMemcpy(d, h, n, cudaMemcpyHostToDevice));

Proteggere anche l’avvio

I kernel non restituiscono nulla, quindi racchiuda cudaGetLastError e una sincronizzazione dopo l’avvio, invece di racchiudere direttamente la riga di avvio.

kernel<<<g, b>>>();
CUDA_CHECK(cudaGetLastError());

Mantenerla in un header

Inserisca la macro in un header condiviso, così ogni file usa lo stesso controllo. La coerenza in questo punto fa risparmiare ore di debug confuso.

Fallire rapidamente e con chiarezza

Il vantaggio principale è il fallimento rapido: non appena una chiamata si interrompe, ottiene file, riga e messaggio precisi invece di dati spazzatura silenziosi.

Controllo rapido

Verifichi quanto ha compreso della macro CUDA_CHECK.

Riepilogo: una macro per proteggerle tutte

Una macro CUDA_CHECK acquisisce il codice, lo confronta con il successo e stampa file e riga in caso di errore. La definisca una volta e la usi ovunque. 🎉

Domande Frequenti

La lezione «Una macro CUDA_CHECK riutilizzabile» è gratuita?

Sì — il testo completo di «Una macro CUDA_CHECK riutilizzabile» è 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 «Una macro CUDA_CHECK riutilizzabile»?

Racchiuda ogni chiamata per maggiore sicurezza. 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 «Una macro CUDA_CHECK riutilizzabile»?

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. Codici di ritorno contro errori asincroni
  2. Usare cudaGetLastError dopo l'avvio
  3. Una macro CUDA_CHECK riutilizzabile
  4. Decodificare cudaGetErrorString
← Torna a CUDA Academy