SISTEMI DISTRIBUITI 1 E LABORATORIO

Anno accademico 2016/2017 - 1° anno - Curriculum Sistemi di Rete e Sicurezza
Docenti Crediti: 9
Organizzazione didattica: 225 ore d'impegno totale, 189 di studio individuale, 36 di lezione frontale
Semestre:

Obiettivi formativi

  • LABORATORIO

    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).


Prerequisiti richiesti

  • LABORATORIO

    Architettura degli Elaboratori;

    Elementi di programmazione;

    Conoscenze di base di C o C++.


Frequenza lezioni

  • LABORATORIO

    Obbligatoria.


Contenuti del corso

  • LABORATORIO

    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. Map­Reduce, file system distribuito, Hadoop e MrJob (python)
    IX. Soluzioni cloud­ oriented per il calcolo distribuito
    XI. OpenStack


Testi di riferimento

  • LABORATORIO

    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, McGraw­Hill (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)


Programmazione del corso

LABORATORIO
 *ArgomentiRiferimenti testi
1*Sistemi distribuiti in ambito HPCG. Coulouris et al.: Distributed Systems, Pearson (2013) 
2*Message Passing InterfaceGropp et al.: Using MPI, MIT press (2014) 
3*OpenMPB. Chapman, G. Jost: Using OpenMP, MIT press (2007) 
4*GPGPU programming e CUDAJ . Sanders: CUDA by Example, Addison-­Wesley (2010) 
5*HPC in architetture ibrideG. Hager, G. Wellein: Introduction to High Performance Computing for Scientists and Engineers, CRC Press (2010) 
6*HadoopT. White: Hadoop: the definitive guide, O’Reilly (2015) 
7*OpenStackT. Fifield et al.: OpenStack Operations Guide, O’Reilly (2016) 
* Conoscenze minime irrinunciabili per il superamento dell'esame.

N.B. La conoscenza degli argomenti contrassegnati con l'asterisco è condizione necessaria ma non sufficiente per il superamento dell'esame. Rispondere in maniera sufficiente o anche più che sufficiente alle domande su tali argomenti non assicura, pertanto, il superamento dell'esame.

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

  • LABORATORIO

    Progetto unico.