Gpu computing
A.A. 2021/2022
Learning objectives
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.
Expected learning outcomes
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 non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Course syllabus and organization
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
- Programmazione e computazione multi-GPU
- Pattern di parallelismo negli algoritmi
- 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
- Programmazione e computazione multi-GPU
- Pattern di parallelismo negli algoritmi
- 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
Il corso è 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)
Professor(s)
Ricevimento:
Su appuntamento (da prendere per email)
Stanza 4016, 4° piano di via Celoria 18