Gpu computing
A.A. 2018/2019
Obiettivi formativi
Questo corso ha come obiettivo l'apprendimento delle principali tecniche di programmazione parallela per lo sviluppo di applicazioni su architetture multicore, come le GPU (Graphics Processing Units), progettate per il calcolo parallelo ad elevate prestazioni. A questo fine viene impiegata l'architettura hw/sw CUDA e il relativo linguaggio CUDA C per lo sviluppo su GPU NVIDIA. L'attività ha quindi un duplice scopo: da un lato un approccio metodologico alla programmazione parallela e al disegno di algoritmi secondo consolidati pattern di parallelismo, dall'altro la pratica di laboratorio per lo sviluppo di applicazioni parallele seguendo un processo di valutazione, parallelizzazione, ottimizzazione delle prestazione e deployment su sistemi ibridi CPU-GPU
Risultati apprendimento attesi
Non definiti
Periodo: Secondo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Programma e organizzazione didattica
Linea Milano
Responsabile
Periodo
Secondo semestre
STUDENTI FREQUENTANTI
Programma
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
- Programmazione e computazione multi-GPU
- Pattern di parallelismo negli algoritmi
- Sviluppo e implementazione di applicazioni su GPU NVIDIA
- 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
- Programmazione e computazione multi-GPU
- Pattern di parallelismo negli algoritmi
- Sviluppo e implementazione di applicazioni su GPU NVIDIA
Propedeuticità
Nessuna
Prerequisiti
Sono prerequisiti essenziali le basi di teoria e pratica della programmazione e una buona conoscenza del linguaggio ANSI C standard.
L'esame consiste di due parti:
- Prova scritta: domande aperte sugli argomenti trattati a lezione (fino a un massimo 24/30 punti)
- Progetto: sviluppo di un progetto basato sul linguaggio CUDA C rivolto ad applicazioni in cui il calcolo parallelo ottiene uno speedup significativo (fino a un massimo 10/30 punti)
L'esame consiste di due parti:
- Prova scritta: domande aperte sugli argomenti trattati a lezione (fino a un massimo 24/30 punti)
- Progetto: sviluppo di un progetto basato sul linguaggio CUDA C rivolto ad applicazioni in cui il calcolo parallelo ottiene uno speedup significativo (fino a un massimo 10/30 punti)
Metodi didattici
Il corso è strutturato in lezioni frontali ed esercitazioni di laboratorio
Materiale di riferimento
STUDENTI NON FREQUENTANTI
Lucidi delle lezioni e documenti reperibili sulla pagina web del corso: http://gpu.di.unimi.it/
Programma
Idem per frequentanti
Docente/i
Ricevimento:
Su appuntamento (da prendere per email)
Stanza 4016, 4° piano di via Celoria 18