Grazie per aver inviato la tua richiesta! Uno dei nostri team membri ti contatterà a breve.
Grazie per aver inviato il tuo prenotazione! Uno dei nostri team membri ti contatterà a breve.
Struttura del corso
Elaborazione GPU e architettura CUDA
- Differenze architetturali tra CPU e GPU
- Modello streaming multiprocessore NVIDIA GPU
- Panoramica del modello di programmazione CUDA
- Elaborazione eterogenea e paradigma host-device
Configurazione dell'ambiente di sviluppo CUDA
- Installazione della CUDA Toolkit 13.x
- Compilatore NVCC e flusso di lavoro di build
- Verifica dell'ambiente con query sul dispositivo
- Integrazione IDE e strumenti di sviluppo
Scrittura e avvio dei kernel CUDA
- Sintassi degli identificatori qualificati per le funzioni kernel
- Configurazione dell'avvio ed esecuzione
- Addizione di vettori e pattern paralleli dati di base
- Macro per il controllo degli errori CUDA
Gerarchia dei thread CUDA e modello di esecuzione
- Organizzazione di griglie, blocchi e thread
- Indicizzazione dei thread e calcolo dell'ID globale
- Esecuzione delle warp e modello SIMT
- Occupazione e utilizzo delle risorse
Architettura della memoria GPU e gestione
- Tipi di memoria: globale, condivisa, costante, registri
- Allocazione e liberazione della memoria del dispositivo
- Trasferimenti host-to-device e device-to-host
- Memoria condivisa per la collaborazione intra-blocco
Memoria unificata e migrazione dei dati
- Modello di memoria unificata e allocazioni gestite
- Migrazione delle pagine e paging on-demand
- Prefetching asincrono con cudaMemPrefetchAsync
- Suggerimenti per i comportamenti d'accesso alla memoria
Profilazione di sistema con Nsight Systems
- Analisi temporale con Nsight Systems
- Identificazione dei punti di sincronizzazione CPU-GPU
- Visualizzazione dell'esecuzione dei kernel e dei trasferimenti di memoria
- Interpretazione dei dati di prestazioni a livello di sistema
Ottimizzazione dei kernel con Nsight Compute
- Profilazione interattiva dei kernel con Nsight Compute
- Analisi del throughput e della banda di memoria
- Utilizzo computazionale e statistiche sullo stato delle warp
- Analisi guidata e regole di ottimizzazione
Stream concorrenti e operazioni asincrone
- Stream CUDA e stream predefinito
- Sovrapposizione dell'esecuzione dei kernel con i trasferimenti dati
- Sincronizzazione degli stream ed eventi CUDA
- Pattern di progettazione per pipeline multi-stream
Gestione degli errori e strumenti di debug
- Codici di errore dell'API CUDA e strategie di recupero
- Compute-sanitizer per il controllo degli accessi alla memoria
- cuda-gdb per il debug dei kernel
- Assert e rilevamento sincrono degli errori
Flusso di lavoro di ottimizzazione basata sulla profilazione
- Metodologia iterativa di profiling
- Identificazione e prioritizzazione dei colli di bottiglia
- Test di regressione delle prestazioni
- Documentazione delle decisioni di ottimizzazione
Progetto applicativo accelerato end-to-end
- Progettazione di una soluzione completa accelerata su GPU
- Integrazione della profilazione durante tutto lo sviluppo
- Benchmark delle prestazioni e reportistica
- Considerazioni per il deployment in produzione
Requisiti
- Competenza base nella programmazione C/C++, inclusi tipi di variabili, cicli, istruzioni condizionali, funzioni e manipolazione degli array
- Conoscenza della compilazione e dell'esecuzione di programmi da riga di comando
- Nessuna esperienza precedente con GPU o programmazione CUDA richiesta
Pubblico obiettivo
- Sviluppatori software ed ingegneri che desiderano accelerare le applicazioni C/C++ con GPU
- Ricercatori scientifici e professionisti HPC in transizione da elaborazione solo CPU a computazione eterogenea
- Leader tecnici che valutano l'accelerazione GPU per carichi di lavoro in produzione
8 ore