Gpu computing
A.A. 2024/2025
Obiettivi formativi
L'obiettivo di questo insegnamento è l'apprendimento delle principali tecniche di programmazione parallela e disegno di algoritmi paralleli per lo sviluppo di applicazioni su architetture many-core, come le GPU (Graphics Processing Units), progettate per il calcolo parallelo ad elevate prestazioni.
Risultati apprendimento attesi
Ci si attende che lo studente maturi una decisa attitudine alla progettazione orientata a sistemi ibridi CPU-GPU, al fine di:
- affrontare il processo di disegno logico volto ad individuare sotto-task effettivamente parallelizzabili
- analizzare in modo critico l'uso di risorse hw richieste dai diversi livelli di concorrenza
- consolidare il fondamentale processo di valutazione e ottimizzazione delle prestazioni
- affrontare il processo di disegno logico volto ad individuare sotto-task effettivamente parallelizzabili
- analizzare in modo critico l'uso di risorse hw richieste dai diversi livelli di concorrenza
- consolidare il fondamentale processo di valutazione e ottimizzazione delle prestazioni
Periodo: Secondo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento può essere seguito come corso singolo.
Programma e organizzazione didattica
Edizione unica
Responsabile
Periodo
Secondo semestre
Programma
- Introduzione ai sistemi di calcolo eterogenei basati su CPU e GPU
- Il concetto di GPGPU (General Purpose GPU) programming
- Architetture di calcolo parallelo
- Il modello di programmazione CUDA
- Il modello di esecuzione CUDA
- Il modello di memoria CUDA
- Stream, concorrenza e ottimizzazione delle prestazioni
- Librerie di CUDA SDK accelerate da GPU
- Librerie Python accelerate su GPU
- Pattern di parallelismo: algoritmi su grafi, scan e sorting
- Sviluppo di reti neurali e libreria cuDNN
- Sviluppo e implementazione di applicazioni su GPU NVIDIA
- Il concetto di GPGPU (General Purpose GPU) programming
- Architetture di calcolo parallelo
- Il modello di programmazione CUDA
- Il modello di esecuzione CUDA
- Il modello di memoria CUDA
- Stream, concorrenza e ottimizzazione delle prestazioni
- Librerie di CUDA SDK accelerate da GPU
- Librerie Python accelerate su GPU
- Pattern di parallelismo: algoritmi su grafi, scan e sorting
- Sviluppo di reti neurali e libreria cuDNN
- Sviluppo e implementazione di applicazioni su GPU NVIDIA
Prerequisiti
Sono requisiti essenziali le basi di teoria e pratica della programmazione e una buona conoscenza del linguaggio ANSI C standard
Metodi didattici
L'insegnamento è strutturato in lezioni frontali ed esercitazioni di laboratorio basate sul linguaggio di programmazione CUDA C.
Materiale di riferimento
I lucidi delle lezioni, i testi di riferimento e i documenti tecnici sono reperibili sulla pagina web del corso http://gpu.di.unimi.it/
Modalità di verifica dell’apprendimento e criteri di valutazione
L'esame consiste di due parti:
- Prova scritta: domande aperte sugli argomenti trattati a lezione (fino a un massimo 24 punti)
- Progetto: sviluppo di un progetto basato sul linguaggio CUDA C (fino a un massimo 10 punti)
- Prova scritta: domande aperte sugli argomenti trattati a lezione (fino a un massimo 24 punti)
- Progetto: sviluppo di un progetto basato sul linguaggio CUDA C (fino a un massimo 10 punti)
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente:
Grossi Giuliano
Turni:
Turno
Docente:
Grossi GiulianoDocente/i
Ricevimento:
Su appuntamento (da prendere per email)
Stanza 4016, 4° piano di via Celoria 18