HIGH PERFORMANCE COMPUTING

Docenti: 
AMORETTI Michele
Crediti: 
6
Sede: 
PARMA
Anno accademico di offerta: 
2020/2021
Responsabile della didattica: 
Settore scientifico disciplinare: 
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI (ING-INF/05)
Semestre dell'insegnamento: 
Secondo Semestre

Obiettivi formativi

Conoscenze e capacità di comprendere - Mediante le lezioni frontali tenute durante il corso, lo studente acquisirà i metodi e le conoscenze necessari a comprendere il funzionamento delle principali tipologie di macchine astratte. Lo studente apprenderà le principali classi di complessità computazionale. Lo studente apprenderà inoltre i principi e le tecnologie delle architetture di calcolo parallele, nonché i principi dell'analisi e progettazione di algoritmi paralleli. Lo studente acquisirà competenze relative alle tecniche di simulazione, con particolare enfasi sulla simulazione ad eventi discreti. Infine, lo studente acquisirà i metodi e le conoscenze necessari a comprendere il funzionamento dei computer quantistici e a progettare semplici algoritmi quantistici.
Capacità di applicare conoscenza e comprensione - Mediante le lezioni frontali e le esercitazioni pratiche svolte in classe relativamente ad alcuni argomenti del programma, lo studente apprenderà come applicare le conoscenze acquisite in un contesto reale di progettazione. In particolare, lo studente imparerà a: progettare algoritmi paralleli efficienti, progettare e sviluppare programmi paralleli, progettare e sviluppare simulatori ad eventi discreti, progettare algoritmi e protocolli quantistici.
Autonomia di giudizio - Lo studente dovrà essere in grado di comprendere e valutare in maniera critica le principali tipologie di sistemi di calcolo ad alte prestazioni.
Capacità comunicative - Tramite le lezioni frontali e il confronto con il docente, lo studente acquisirà il lessico specifico inerente i sistemi di calcolo ad alte prestazioni. Ci si attende che, al termine del corso, lo studente sia in grado di trasmettere, in forma orale e in forma scritta, i principali contenuti del corso, quali idee, problematiche ingegneristiche e relative soluzioni.
Capacità di apprendimento - Lo studente che abbia frequentato il corso sarà in grado di approfondire le proprie conoscenze in materia di sistemi di calcolo ad alte prestazioni attraverso la consultazione autonoma di testi specialistici, riviste scientifiche o divulgative, anche al di fuori degli argomenti trattati strettamente a lezione, al fine di affrontare efficacemente l’inserimento nel mondo del lavoro o intraprendere percorsi di formazione successivi.

Contenuti dell'insegnamento

1. Informatica Teorica
2. Calcolo Parallelo
3. Tecniche di Simulazione
4. Calcolo Quantistico

Programma esteso

1. Informatica Teorica (8 ore)
1.1. Richiami di teoria dell'informazione; 1.2. Automi e calcolabilità; 1.3. Complessità computazionale
2. Calcolo Parallelo (18 ore)
2.1. Architetture parallele; 2.2. Algoritmi paralleli; 2.3. Valutazione delle prestazioni; 2.4. Message Passing Interface (MPI); 2.5. MapReduce; 2.6. Sistemi Multicore, OpenMP; 2.7. General Purpose GPU Programming, CUDA
3. Tecniche di Simulazione (6 ore)
3.1. Concetti generali sulle simulazioni; 3.2. Simulazioni ad eventi discreti; 3.3. Modelli DEVS; 3.4. Piattaforma di simulazione DEUS
4. Calcolo Quantistico (18 ore)
4.1. Cenni storici, prospettive a breve e lungo termine; 4.2. Richiami di algebra lineare; 4.3. Postulati della meccanica quantistica; 4.4. Quantum bit; 4.5. Modello di calcolo a circuiti quantistici; 4.6. Architetture dei computer quantistici; 4.7. Algoritmi quantistici; 4.8. Protocolli per la crittografia quantistica; 4.9. Quantum Internet

Bibliografia

- M. Sipser, Introduction to the Theory of Computation, Cengage Learning, 2013
- E. Aubanel, Elements of Parallel Computing, CRC Press, 2017
- B.P. Zeighler, H. Praehofer, T.G. Kim, Theory of Modeling and Simulation, Second Edition, Academic Press, 2000
- M. Nielsen, I. Chuang, Quantum Computation and Quantum Information, Cambridge University Press, 2010

Metodi didattici

Le attività didattiche saranno condotte privilegiando lezioni frontali in cui il docente spiega gli argomenti mostrando delle slide e scrivendo sulla lavagna.
Alcune ore saranno dedicate ad esercitazioni pratiche di programmazione parallela, sviluppo di simulatori ad eventi discreti e programmazione di computer quantistici.Il materiale didattico (comprendente slide, dispense, codice sorgente, articoli scientifici) verrà caricato con cadenza settimanale sulla piattaforma Elly. Per scaricare il materiale didattico è necessaria l’iscrizione al corso on line.
Si ricorda agli studenti non frequentanti di controllare il materiale didattico disponibile e le indicazioni fornite dal docente tramite la piattaforma Elly.

Modalità verifica apprendimento

La valutazione degli apprendimenti prevede due momenti:
1) una prova scritta della durata di 3 ore, articolata su domande aperte relative agli argomenti teorici del corso;
2) un progetto pratico (sviluppo di software) su uno dei seguenti temi:
- calcolo parallelo
- simulazione ad eventi discreti
- calcolo quantistico
E' prevista la stesura di una breve relazione e la presentazione orale del lavoro svolto.
La prova scritta è valutata con scala 0-30. Il progetto è valutato con scala 0-30. I due punteggi vengono mediati a formare il voto finale.
Non sono previste prove in itinere.