SCHEDA DELL'INSEGNAMENTO (SI)
SSD ING-INF/05
LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA
ANNO ACCADEMICO: 2022-2023
INFORMAZIONI GENERALI - DOCENTE
DOCENTE: ALESSANDRO CILARDO
TELEFONO: +39 081 7683852
EMAIL: Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
INFORMAZIONI GENERALI - ATTIVITÀ
INSEGNAMENTO INTEGRATO (EVENTUALE):
MODULO (EVENTUALE):
CANALE (EVENTUALE):
ANNO DI CORSO (I, II, III): II
SEMESTRE (I, II): I
CFU: 6
(se previsti dall'Ordinamento del CdS)
...................................................................................................................................................
EVENTUALI PREREQUISITI
...................................................................................................................................................
OBIETTIVI FORMATIVI
L'insegnamento si propone di fornire agli studenti le nozioni specialistiche relative alle architetture degli odierni calcolatori impiegati per il calcolo ad alte prestazioni, approfondendo concetti legati alla struttura interna dei processori superscalari, per poi estendere la trattazione ai calcolatori multi- e many-core. A riguardo, l’insegnamento copre anche le architetture di calcolo eterogenee, in particolare basate su GPU, ed i relativi modelli di programmazione. La trattazione delle architetture di calcolo avanzate è poi estesa alle emergenti tecnologie di Quantum Computing, introducendo gli studenti a tematiche di progetto e gestione di sistema ed aspetti di programmazione.
(Descrittori di Dublino)
Conoscenza e capacità di comprensione
Il percorso formativo, basato su lezioni teoriche ed esercitative, punta a dotare lo studente delle conoscenze relative alle architetture degli odierni calcolatori impiegati per il calcolo ad alte prestazioni (high performance computing, HPC), con riferimento alle diverse forme di parallelismo offerte alle applicazioni. L’insegnamento pertanto approfondisce la comprensione della struttura interna dei processori superscalari, per poi estendere la trattazione ai calcolatori multi- e many-core. La prima parte del programma è anche rivolta alla presentazione delle architetture di calcolo eterogenee, in particolare basate su GPU, un paradigma assestato per lo sviluppo di applicazioni parallele ad alte prestazioni. La seconda parte del corso è invece volta ad approfondire le opportunità offerte dalle emergenti tecnologie di Quantum Computing (QC) nella prospettiva del calcolo ad alte prestazioni, affrontando tematiche di progetto e gestione di sistema ed aspetti di programmazione.
Capacità di applicare conoscenza e comprensione
Il percorso formativo è orientato a trasmettere le capacità e gli strumenti metodologici/operativi necessari ad applicare le conoscenze in termini di sviluppo di applicazioni parallele, programmazione per architetture di calcolo avanzate ed emergenti, analisi di aspetti prestazionali. Nello specifico, la parte esercitativa del corso è dedicata alla presentazione di modelli di programmazione per GPU, in particolare CUDA ed OpenCL. Inoltre, essa fornisce spunti relativi alle emergenti tecnologie di Quantum Computing, focalizzandosi su piattaforme sperimentali di QC attualmente rese disponibili da realtà industriali internazionali. In tal senso, il corso prevede la presentazione di casi di studio reali, in parte sviluppati in forma interattiva con gli studenti, con riferimento sia alle architetture parallele convenzionali sia agli emergenti scenari del QC.
PROGRAMMA-SYLLABUS
l corso è organizzato in due tipologie di contenuti, una teorica ed una applicativa.
Parte teorica
• Architetture superscalari, esecuzione out-of-order, hardware multi-threading, etc.
• Organizzazione della memoria in sistemi paralleli: problematiche di coerenza e consistenza
• Interconnessioni a livello sistema e network on-chip
• Estensioni vettoriali: concetti generali e casi di studio relativi a processori reali
• Graphics Processing Unit: aspetti architetturali e casi di studio reali
• Modelli di programmazione per GPU: approfondimenti su concetti ed aspetti avanzati di programmazione
• Quantum Computing: aspetti tecnologici e modelli computazionali
Parte applicativa
Per il laboratorio, gli studenti svilupperanno individualmente un elaborato che prevedrà l’approfondimento verticale di aspetti tecnologici su architetture di calcolo avanzate o emergenti (QC), o alternativamente lo sviluppo ottimizzato e la presentazione di un programma su un’architettura GPU o un’estensione vettoriale.
MATERIALE DIDATTICO
• J. Hennessy, D. A. Patterson, Computer Architecture: A Quantitative Approach, 6th Edition, Morgan Kaufmann, 2019
• R.S. Sutor, Dancing with Qubits: How quantum computing works and how it can change the world, Packt Publishing, 2019
• NVIDIA, CUDA C Programming Guide, v. 11.1.0, online, NVIDIA 2020
• V. Silva, Practical Quantum Computing for Developers, Apress, 2018
• D. Kaeli, P. Mistry, Heterogeneous Computing with OpenCL 2.0, Morgan Kaufmann, 3rd edition, 2015
• D. J. Sorin, M. D. Hill, and D. A. Wood, A Primer on Memory Consistency and Cache Coherence, Morgan Claypool 2011
• N. E. Jerger, T. Krishna, and L.-S. Peh, On-Chip Networks, Morgan Claypool, 2nd edition, 2017
• Manuali e dispense fornite durante il corso.
MODALITÀ DI SVOLGIMENTO DELL'INSEGNAMENTO
Il docente utilizzerà:
a) lezioni frontali per circa il 65% delle ore totali,
b) esercitazioni per approfondire praticamente aspetti teorici per 8 ore,
c) laboratorio per approfondire le conoscenze applicate per 6 ore, d) seminari per approfondire tematiche specifiche per 2 ore.
VERIFICA DI APPRENDIMENTO E CRITERI DI VALUTAZIONE
a) Modalità di esame:
L'esame si articola in prova: | |
Scritta e orale | |
Solo scritta o intercorso a metà | |
Solo orale | |
Discussione di elaborato progettuale | |
Altro |
In caso di prova scritta i quesiti sono (*): | |
A risposta multipla | |
A risposta libera | |
Esercizi numerici |
b) Modalità di valutazione:
Non applicabile (una sola tipologia di prova prevista)