Acquisire il lavoro in un grafo
Registrare uno stream in un grafo CUDA
Acquisire il lavoro in un grafo è 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.
Che cos'è un CUDA graph
Un CUDA graph registra un'intera sequenza di kernel e copie come un'unica unità di lavoro riutilizzabile, che può essere inviata nuovamente più volte.
I lanci si sommano
Ogni singolo lancio di un kernel comporta un piccolo overhead lato CPU. Con migliaia di lanci per iterazione, questo costo diventa significativo.
Definire una volta, eseguire molte
Un graph consente di descrivere il lavoro una sola volta e poi riprodurlo a basso costo, sostenendo il costo di configurazione una sola volta.
Modalità stream capture
Il modo più semplice per crearne uno è la stream capture: si registrano in uno stream i normali lanci che si eseguono già.
cudaStreamBeginCapture(stream, cudaStreamCaptureModeGlobal);Inviare il lavoro normalmente
Tra l'inizio e la fine, lanci kernel ed esegua copie come di consueto. Nulla viene ancora eseguito: le operazioni vengono registrate, non eseguite.
kernelA<<<g, b, 0, stream>>>(d);
kernelB<<<g, b, 0, stream>>>(d);Terminare la cattura
Interrompa la registrazione con cudaStreamEndCapture, che restituisce un cudaGraph_t che descrive tutto il lavoro.
cudaGraph_t graph;
cudaStreamEndCapture(stream, &graph);Dipendenze dedotte
La cattura individua automaticamente le dipendenze tra le operazioni in base al modo in cui ha utilizzato lo stream.
Istanziare prima dell'esecuzione
Un graph è solo una descrizione. Prima di poterlo lanciare, deve compilarlo in un oggetto eseguibile graph exec.
cudaGraphExec_t exec;
cudaGraphInstantiate(&exec, graph, 0);Creare graph manualmente
Può anche aggiungere nodi in modo esplicito con l'API dei graph, ottenendo il pieno controllo sulla struttura e sugli archi.
cudaGraphAddKernelNode(&n, graph, deps, 1, ¶ms);Più stream, un solo graph
La cattura può estendersi a più stream, quindi i rami indipendenti eseguiti contemporaneamente confluiscono tutti nello stesso graph.
Riutilizzare per molte iterazioni
Una volta istanziato, lo stesso oggetto exec viene lanciato ripetutamente: è proprio in questo scenario che i graph dimostrano il loro valore.
Verifica rapida
Che cosa produce cudaStreamEndCapture?
Riepilogo: catturare graph
Racchiuda i lanci nella stream capture per registrare un cudaGraph_t, lo istanzi una sola volta e lasci che la cattura deduca le dipendenze per Lei. Ottimi progressi! 🎉
Domande Frequenti
La lezione «Acquisire il lavoro in un grafo» è gratuita?
Sì — il testo completo di «Acquisire il lavoro in un grafo» è 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 «Acquisire il lavoro in un grafo»?
Registrare uno stream in un grafo CUDA 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 «Acquisire il lavoro in un grafo»?
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
- Lanciare kernel da un kernel
- Quando il parallelismo dinamico conviene
- Acquisire il lavoro in un grafo
- Riprodurre i grafi per ridurre l'overhead