Enumerare e selezionare i dispositivi
cudaSetDevice e contesti per GPU
Enumerare e selezionare i dispositivi è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 1 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.
Più di una GPU
Una singola macchina può contenere diverse GPU. Per utilizzarle tutte, il programma deve prima rilevare quanti dispositivi sono presenti, prima di inviare loro il lavoro.
Contare i dispositivi
Una chiamata indica quante GPU il runtime riesce a vedere. cudaGetDeviceCount scrive questo numero in un int fornito da Lei.
int count;
cudaGetDeviceCount(&count);I dispositivi sono numerati
A ogni GPU viene assegnato un id intero da 0 fino a count meno uno. Questo device id consente di indicare al runtime una scheda specifica.
Scegliere il dispositivo attivo
Scelga quale GPU sarà interessata dalle chiamate successive con cudaSetDevice. Da quel momento, allocazioni e lanci vengono indirizzati a quella scheda.
cudaSetDevice(1);Esiste un dispositivo corrente
In ogni momento, per il thread chiamante, esattamente una GPU è il dispositivo corrente. Ogni cudaMalloc o lancio di kernel viene eseguito sul dispositivo attualmente corrente.
Esaminare un dispositivo
Prima di affidarsi a una GPU, può leggerne le specifiche. cudaGetDeviceProperties riempie una struct con nome, dimensione della memoria e compute capability.
cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);Leggere le proprietà
La struct delle proprietà contiene molte informazioni. Campi come name e totalGlobalMem aiutano a scegliere la scheda migliore o a ignorare quella troppo piccola.
Ogni dispositivo possiede la propria memoria
Un puntatore restituito da cudaMalloc appartiene alla GPU che era corrente in quel momento. Usarlo mentre è corrente un altro device è un errore quasi certo.
Contesti per dispositivo
Dietro ogni GPU si trova un context che contiene le sue allocazioni e i suoi stream. Cambiare il dispositivo corrente significa passare al context di quel dispositivo.
Iterare su tutte le GPU
Un modello comune consiste in un ciclo che chiama cudaSetDevice per ogni id e poi esegue la configurazione su quella scheda. È così che si distribuisce il lavoro su ogni device.
for (int d = 0; d < count; d++) {
cudaSetDevice(d);
}Ripristinare prima di uscire
Se una funzione di supporto modifica il dispositivo corrente, lo ripristini al termine. Lasciare modificato il dispositivo corrente può sorprendere il resto del codice.
Controllo rapido
Ricordi quale chiamata sceglie la GPU utilizzata dalle allocazioni e dai lanci successivi.
Riepilogo
Conta le GPU, ne sceglie una con cudaSetDevice e la esamina tramite le proprietà. Ogni device possiede la propria memoria e il proprio context. Prossimo argomento: suddividere il lavoro tra più dispositivi. ✨
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 «Enumerare e selezionare i dispositivi» è gratuita?
Sì — il testo completo di «Enumerare e selezionare i dispositivi» è 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 «Enumerare e selezionare i dispositivi»?
cudaSetDevice e contesti per GPU 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 1 di 4.
Quanto tempo richiede la lezione «Enumerare e selezionare i dispositivi»?
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
- Enumerare e selezionare i dispositivi
- Partizionare il lavoro tra le GPU
- Accesso peer-to-peer alla memoria
- Multi-GPU con NCCL