Un approccio moderno alla risoluzione di problemi scientifici non può prescindere dall’utilizzo di sistemi di calcolo per la creazione di modelli, la simulazione di scenari e la verifica sperimentale di ipotesi difficilmente ricreabili in laboratorio. Inoltre un numero sempre maggiore di applicativi home consumer hanno da tempo iniziato a richiedere ed utilizzare piattaforme di calcolo ad alte performance.
Questo corso vuole offrire una breve introduzione alle architetture di calcolo ad alte performance ed ai principali paradigmi: MPI, OpenMP, GPGPU, hadoop, openstack. Infine il corso si ripropone di creare quegli strumenti di base per l’approfodimento ulteriore di questi paradigmi e delle tecnologie ad essi connesse, con particolare riferimento alle moderne tecniche ibride di programmazione per il calcolo parallelo ad alte performances, ai paradigmi utilizzati per la collezione e l'analisi di grandi quantiativi di dati, quali Hadoop e mapreduce, e l'utilizzo ad essi connesso delle infrastrutture di calcolo su cloud e la loro gestione (Openstack).
Architettura degli Elaboratori;
Elementi di programmazione;
Conoscenze di base di C o C++.
Obbligatoria.
I. Introduzione al calcolo distribuito
II. Tassonomia di Flynn, paradigmi di memoria, threads, scheduling, messaggi
III. Paradigmi di passaggio di messaggi e Message Passing Interface
IV. Paradigmi di Shared Memory e Open MultiProcessing
V. GPGPU Programming e Common Unified Device Architecture (CUDA)
VI. Programmazione ad ate performance per architetture ibride di calcolo
VII. Distributed Big Data Analysis e paradigmi di calcolo shared nothing
VIII. MapReduce, file system distribuito, Hadoop e MrJob (python)
IX. Soluzioni cloud oriented per il calcolo distribuito
XI. OpenStack
Testi di riferimento:
1. G. Hager, G. Wellein: Introduction to High Performance Computing for Scientists
and Engineers, CRC Press (2010)
1. G. Coulouris et al.: Distributed Systems, Pearson (2013)
2. Gropp et al.: Using MPI, MIT press (2014)
3. B. Chapman, G. Jost: Using OpenMP, MIT press (2007)
4. J. Sanders: CUDA by Example, Addison-Wesley (2010)
5. T. White: Hadoop: the definitive guide, O’Reilly (2015)
6. T. Fifield et al.: OpenStack Operations Guide, O’Reilly (2016)
Altri testi utili per approfondimento:
- D. Culler et al.: Parallel Computer Architecture, Kaufmann (1998)
- M.J. Quinn: Parallel Programming in C with Mpi and Openmp, McGrawHill (2008)
- G. Barlas: Multicore and GPU Programming, Kaufmann (2014)
- N. Wilt: CUDA Handbook, Addison-Wesley (2013)
- E. Sammer: Hadoop Operations, O’Reilly (2012)
- M. GRoover, T. Malaska: Hadoop Applications Architectures, O’Reilly (2015)
- K. Basil et al.: OpenStack Security Guide, O’Reilly (2015)
http://www.dmi.unict.it/napoli/
LABORATORIO | |||
* | Argomenti | Riferimenti testi | |
1 | * | Sistemi distribuiti in ambito HPC | G. Coulouris et al.: Distributed Systems, Pearson (2013) |
2 | * | Message Passing Interface | Gropp et al.: Using MPI, MIT press (2014) |
3 | * | OpenMP | B. Chapman, G. Jost: Using OpenMP, MIT press (2007) |
4 | * | GPGPU programming e CUDA | J . Sanders: CUDA by Example, Addison-Wesley (2010) |
5 | * | HPC in architetture ibride | G. Hager, G. Wellein: Introduction to High Performance Computing for Scientists and Engineers, CRC Press (2010) |
6 | * | Hadoop | T. White: Hadoop: the definitive guide, O’Reilly (2015) |
7 | * | OpenStack | T. Fifield et al.: OpenStack Operations Guide, O’Reilly (2016) |
Progetto unico.
No.
Presentazione e discussione di una relazione riguardante il progetto svolto.