Contattataci

Struttura del corso

Computazione su GPU e architettura CUDA

  • Differenze strutturali tra CPU e GPU
  • Modello dei multiprocessori di flusso delle GPU NVIDIA
  • Panoramica sul modello di programmazione CUDA
  • Elaborazione eterogenea e paradigma host-device

Configurazione dell’ambiente di sviluppo CUDA

  • Installazione dello strumento CUDA Toolkit 13.x
  • Il compilatore NVCC e il flusso operativo di build
  • Verifica dell’ambiente mediante richieste informazioni sul dispositivo
  • Integrazione con ambienti IDE e strumenti di sviluppo

Scrivere ed avviare i kernel CUDA

  • Sintassi e qualificatori delle funzioni kernel
  • Configurazione e lancio dell’esecuzione dei kernel
  • Esempi di somma vettoriale e schemi paralleli base
  • Macro per il controllo degli errori CUDA

Gerarchia dei thread e modello d’esecuzione in CUDA

  • Organizzazione di griglie, blocchi e thread
  • Indicizzamento dei thread e calcolo degli ID globali
  • Esecuzione a livello di warp e modello SIMT
  • Occupancy e sfruttamento delle risorse hardware

Architettura della memoria GPU e gestione delle risorse

  • Tipi di memoria: globale, condivisa, costante e registri
  • Assegnazione e liberazione della memoria sul dispositivo
  • Trasferimento dei dati tra host e device
  • Utilizzo della memoria condivisa per la collaborazione all’interno di un blocco

Memoria Unificata e migrazione dinamica dei dati

  • Il modello della memoria unificata e le allocazioni gestite
  • Migrazione automatica delle pagine e paging on-demand
  • Utilizzo del prefetching asincrono tramite cudaMemPrefetchAsync
  • Suggerimenti per la gestione della memoria in base ai pattern di accesso<

Profilazione a livello di sistema con Nsight Systems

  • Analisi temporale delle attività tramite Nsight Systems
  • Rilevamento dei punti di sincronizzazione tra CPU e GPU
  • Visualizzazione dell’esecuzione kernel e dei trasferimenti dati
  • Interpretazione dei dati relativi alle prestazioni complessive del sistema<

Ottimizzazione dei kernel con Nsight Compute

  • Analisi interattiva dei kernel tramite Nsight Compute
  • Valutazione della velocità di trasferimento dati e larghezza di banda<
  • Utilizzo computazionale e statistiche relative allo stato dei warp<
  • Consigli guidati per l’analisi e l’ottimizzazione delle prestazioni<

Flussi di esecuzione concorrenti e operazioni asincrone

  • I flussi di esecuzione CUDA e il loro utilizzo principale<
  • Sovrapposizione tra l’esecuzione di kernel e i trasferimenti dei dati<
  • Sincronizzazione dei flussi e gestione degli eventi CUDA<
  • Schema progettuali per pipeline che sfruttano più flussi concorrenti<

Gestione degli errori e strumenti di debug<

  • Codici di errore dell’API CUDA e strategie per la correzione<
  • L’utilizzo di Compute-sanitizer per il controllo dell’accesso alla memoria<
  • Utilizzo di cuda-gdb per il debug a livello di kernel<
  • Affermazioni condizionali e rilevamento sincrono degli errori<

Metodologia basata sulla profilazione per l’ottimizzazione<

  • Approccio iterativo all’analisi delle prestazioni<
  • Riconoscimento e prioritarizzazione dei colli di bottiglia<
  • Test di regressione per monitorare eventuali peggioramenti nelle prestazioni<
  • Documentazione completa delle decisioni ottimizzative adottate<

Progetto finale: realizzazione di un’applicazione accelerata<

  • Progettazione completa di una soluzione basata sull’utilizzo della GPU<
  • Integrazione costante degli strumenti di profilazione nel processo di sviluppo<
  • Valutazione delle prestazioni e redazione di report dettagliati<
  • Aspetti pratici per il rilascio in ambiente produttivo<

Requisiti

  • Conoscenze di base nella programmazione C\/C++: tipi di dati, cicli, strutture condizionali, funzioni e manipolazione degli array
  • Familiarità con la compilazione ed esecuzione dei programmi da riga di comando
  • Non è richiesta alcuna esperienza precedente nello sviluppo per GPU o in programmazione CUDA

Destinatari del corso

  • Sviluppatori e ingegneri software intenzionati ad accelerare le proprie applicazioni C\/C++ sfruttando le GPU
  • Ricercatori scientifici e professionisti dell’HPC in fase di transizione dall’elaborazione esclusivamente su CPU a sistemi eterogenei
  • Responsabili tecnici interessati a valutare l’utilizzo delle GPU per applicazioni operative
 8 ore

Numero di Partecipanti


Prezzo per partecipante

Corsi in Arrivo

Categorie relative