Gpu computing

A.A. 2020/2021
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
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
Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre
Il corso in fase emergenziale verrà erogato a distanza, possibilmente in modalità sincrona usando la piattaforma Zoom. Le lezioni verranno comunque registrate, salvate su Ariel, e resteranno accessibili per l'intero semestre.

Materiali di riferimento:
Il programma e il materiale di riferimento non subiranno variazioni.

Modalità di verifica dell'apprendimento e criteri di valutazione:
La modalità d'esame e i criteri di valutazioni non cambiano rispetto a quanto stabilito nel syllabus (situazione non emergenziale).
Lo svolgimento degli scritti avverrà in presenza oppure a distanza (nei casi previsti dall'Ateneo) sulla piattaforma exam.net (modalità illustrate sul portale di Ateneo).
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
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/30 punti)
- Progetto: sviluppo di un progetto basato sul linguaggio CUDA C (fino a un massimo 10/30 punti)
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Grossi Giuliano
Docente/i
Ricevimento:
Su appuntamento.
Dip. di Informatica, via Celoria 18, stanza 4016