0Pricing
CUDA Academy · Lezione

Creare e utilizzare gli stream

Invii attività indipendenti a code di lavoro separate.

Creare e utilizzare gli stream è 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.

Code di lavoro indipendenti

Uno stream non predefinito è una coda di lavoro propria. Due stream vengono eseguiti indipendentemente, quindi la GPU può avanzare su entrambi contemporaneamente. 🧵

L'handle dello stream

Uno stream risiede in un handle cudaStream_t. Lo crea una volta, lo passa alle chiamate e lo distrugge quando non serve più.

cudaStream_t stream;

Creare uno stream

Chiami cudaStreamCreate per creare un nuovo stream. Questa funzione alloca la coda che il driver usa per pianificare il lavoro di quello stream.

cudaStreamCreate(&stream);

Avviare un kernel in uno stream

La configurazione di avvio di un kernel ha un quarto argomento fourth: la dimensione della memoria condivisa, seguito dallo stream. Passi il proprio stream per accodare lì il kernel.

kernel<<<grid, block, 0, stream>>>(d_data);

Due stream, due attività

Inserisca un'attività in streamA e un'altra in streamB. Se non esiste alcuna dipendenza tra loro, la GPU è libera di eseguirle entrambe contemporaneamente.

kA<<<g, b, 0, streamA>>>(a);
kB<<<g, b, 0, streamB>>>(d);

Asincroni per natura

Le chiamate agli stream sono asincrone: l'host restituisce immediatamente il controllo e continua. La GPU elabora la coda secondo i propri tempi.

Attendere un singolo stream

Usi cudaStreamSynchronize per bloccare l'host finché non termina quello stream, invece di attendere l'intero dispositivo.

cudaStreamSynchronize(stream);

Controllare senza bloccare

Vuole dare un'occhiata? cudaStreamQuery restituisce cudaSuccess se lo stream è terminato e cudaErrorNotReady se è ancora occupato, senza bloccarla.

cudaStreamQuery(stream);

Effettuare la pulizia

Quando uno stream non è più necessario, lo liberi con cudaStreamDestroy. Il lavoro in sospeso viene comunque completato prima che l'handle venga liberato.

cudaStreamDestroy(stream);

Stream non bloccanti

Crei uno stream con il flag cudaStreamNonBlocking, così non viene sincronizzato implicitamente con lo stream predefinito legacy.

cudaStreamCreateWithFlags(&s, cudaStreamNonBlocking);

Più stream, maggiore sovrapposizione

Distribuire blocchi indipendenti su diversi stream permette allo scheduler di mantenere alimentati i motori. Oltre un certo numero, i vantaggi diminuiscono quando l'hardware è già pienamente utilizzato.

Verifica rapida

Come si accoda un kernel in uno stream specifico?

Riepilogo

Ora sa creare stream, avviare kernel al loro interno, sincronizzarli o interrogarli e infine distruggerli. Gli stream indipendenti rendono possibile una vera concorrenza. ✨

Domande Frequenti

La lezione «Creare e utilizzare gli stream» è gratuita?

Sì — il testo completo di «Creare e utilizzare gli stream» è 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 «Creare e utilizzare gli stream»?

Invii attività indipendenti a code di lavoro separate. 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 «Creare e utilizzare gli stream»?

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. La trappola dello stream predefinito
  2. Creare e utilizzare gli stream
  3. Eventi per misurazione e sincronizzazione
  4. Sovrapporre copia e calcolo
← Torna a CUDA Academy