L'avvio con tripla parentesi angolare
Chiami un kernel con >>.
L'avvio con tripla parentesi angolare è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 2 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.
L’avvio è diverso
Non chiamate un kernel come una normale funzione. Lo avviate, indicando alla GPU quanti thread creare contemporaneamente. 🚀
La sintassi <<< >>>
L’avvio usa le speciali parentesi angolari triple di CUDA. Al loro interno indicate la configurazione dell’avvio, prima del normale elenco di argomenti.
myKernel<<<blocks, threads>>>(args);Primo numero: i blocchi
Il primo valore imposta quanti blocchi avviare. Un blocco è un gruppo di thread che vengono eseguiti insieme e condividono memoria rapida sul chip.
myKernel<<<4, threads>>>(args); // 4 blocksSecondo numero: thread per blocco
Il secondo valore imposta il numero di thread per blocco. Il totale dei thread avviati è uguale al numero di blocchi moltiplicato per i thread per blocco.
myKernel<<<4, 256>>>(args); // 1024 threadsGli argomenti vengono dopo
Dopo le parentesi, passate i normali argomenti del kernel tra parentesi tonde, proprio come in qualsiasi chiamata C++.
doubleIt<<<1, 256>>>(devicePtr);Gli avvii sono asincroni
Un avvio è asincrono: la CPU accoda il lavoro e prosegue immediatamente. La GPU esegue il kernel in background.
Le configurazioni possono essere variabili
I numeri dell’avvio non devono essere necessariamente valori letterali. Spesso calcolate il numero di blocchi in fase di esecuzione a partire dalla dimensione dei dati.
int blocks = (n + 255) / 256;
add<<<blocks, 256>>>(c, a, b, n);Usare dim3 per il 2D
Per griglie e blocchi in 2D o 3D, usate un valore dim3. Questo raggruppa le dimensioni x, y e z nell’avvio.
dim3 threads(16, 16);
blur<<<grid, threads>>>(img);Scegliere i thread per blocco
Un valore predefinito sicuro per i thread per blocco è 128 o 256. I valori devono essere multipli di 32 e non superare 1024.
kernel<<<blocks, 128>>>(data);Una configurazione errata causa un errore
Se chiedete troppi thread per blocco, l’avvio non riesce senza messaggi evidenti. Dovete controllare gli errori subito dopo l’avvio.
kernel<<<1, 2048>>>(p); // too big, failsLeggetelo da sinistra a destra
Interpretate un avvio così: eseguite questo kernel su questo numero di blocchi, ciascuno con questo numero di thread, usando questi argomenti. È semplice una volta compreso il meccanismo.
vectorAdd<<<grid, block>>>(c, a, b, n);Verifica rapida
È il momento di verificare la configurazione dell’avvio.
Riepilogo: l’avvio
Fate l’avvio con kernel<<
Domande Frequenti
La lezione «L'avvio con tripla parentesi angolare» è gratuita?
Sì — il testo completo di «L'avvio con tripla parentesi angolare» è 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 «L'avvio con tripla parentesi angolare»?
Chiami un kernel con >>. 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 2 di 4.
Quanto tempo richiede la lezione «L'avvio con tripla parentesi angolare»?
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
- Anatomia di un kernel
- L'avvio con tripla parentesi angolare
- printf dentro un kernel
- Spiegazione di cudaDeviceSynchronize