Indice
Applicazioni Parallele e Distribuite
Docente: Massimo Coppola
Questa Pagina è relativa al corso di APD per l'A.A. 2008-2009 |
---|
La pagina si evolverà durante il corso, a partire dal programma del corso di CCP degli anni passati, con cui il APD condivide una parte importante degli argomenti trattati.
Sono previsti maggiori approfondimenti, nel corso o per mezzo dei progetti individuali di fine corso, sulle seguenti tematiche:
- sistemi operativi distribuiti e per Grid, paradigmi Grid e Cloud
- processori multicore e problemi relativi alla loro programmazione (multicore, GPGPU)
- macchine virtuali e parallelismo (Java, CLI, meccanismi di JIT e uso nel parallelismo)
Nel frattempo invito gli studenti
- a fare riferimento anche alle pagine del corso di CCP degli anni precedenti.
- a registrarsi per ricevere notifiche dalla pagina Corso di APD - Novità e Annunci.
Corso 2008-2009 (secondo semestre)
Orario delle lezioni
Giovedì | 11-13 | Aula B |
---|---|---|
Venerdì | 9-11 | Aula D1 |
Aggiornato al 25/02/09
Ricevimento Di regola il ricevimento si svolge su appuntamento (meglio via e-mail). L'orario riportato è indicativo.
Giovedì | 14:30-16:30 | Dipartimento stanza 385 |
---|
Obiettivo del corso
L'obiettivo del corso è introdurre un insieme di tecnologie in evoluzione o già utilizzate ad oggi nella realizzazione di applicazioni parallele e distribuite; la presentazione delle tecnologie avviene fondamentalmente grazie alla discussione di un insieme di esempi di applicazioni di particolare rilievo. Lo studente dovrà maturare capacità di analisi e padronanza tecnologica, ed essere in grado di riconoscere i problemi legati alla implementazione di A.P.D., individuare schemi di soluzioni note e saper scegliere gli strumenti di sviluppo appropriati.
Conoscenze.
Al termine del corso lo studente avrà acquisito la conoscenza di tecnologie standard di basso ed alto livello (message passing, skeleton paralleli, component-oriented, stream-oriented) e di loro paradigmi di utilizzo nelle applicazioni. La preparazione di base fornita comprenderà sia strumenti di programmazione programmazione largamente diffusi (MPI) sia prototipi più avanzati allo stato dell'arte nella ricerca e nell'industria.
Programma Preliminare
Sono affrontati modelli di programmazione diversi per tipo e livello di di astrazione (message passing vs shared memory, primitive vs skeleton e pattern), e per ambito applicativo (parallelismo on-chip, parallelismo su cluster, Grid/Cloud Computing). Sono fondamentali sia l'approfondimento individuale, sia l'utilizzo pratico degli strumenti via via presentati; alcune delle lezioni saranno per questo impostate sotto forma di esercitazione, o presupporranno una attività di programmazione ed uso individuale da parte degli studenti.
- Il paradigma a scambio di messaggi. Programmazione a basso livello: introduzione ad MPI. Esempi di applicazioni data parallel e task parallel, decomposizione del calcolo e bilanciamento del carico, problemi regolari ed irregolari.
- Programmazione parallela ad alto livello: l'ambiente ASSIST. Utilizzo delle forme di parallelismo base in Assist. Esempi di applicazioni e valutazione delle prestazioni.
- Il paradigma a memoria condivisa. Le gerarchie di memoria: memoria centrale / secondaria / locale / condivisa. Implementazione a software delle memorie condivise. Cenni agli algoritmi per le gerarchie di memoria, contenimento e mascheramento della latenza di accesso.
- Architetture stream-oriented, multicore generici e dedicati e forme di programmazione.
- Piattaforme di calcolo distribuito: Grid Computing, Cloud Computing, Sistemi operativi distribuiti, reti di sistemi mobili. Problematiche di realizzazione ed esempi di applicazione.
- Tra i possibili approfondimenti nella parte finale del corsi, e argomenti di progetto: I/O parallelo, algoritmi memory-intensive e data mining parallelo; calcolo stream-oriented, piattaforme multicore e GPGPU.
Materiale didattico
- B. Wilkinson, M. Allen Parallel Programming, 2nd edition. 2005, Prentice-Hall. Disponibile in Biblioteca la prima edizione, C.1.2 w74 INF .
- A. Grama, A. Gupta, G. Karypis, V. Kumar Introduction to Parallel Computing, 2nd edition. 2003, Addison Wesley. Disponibile in Biblioteca la prima edizione D.1.3 k96 INF
Solo alcune parti, specificate a lezione.
Standard MPI, versione 1.1 Solo le parti specificate nell'elenco delle lezioni.
Standard MPI 2.1 (pdf letter) Solo le parti specificate nell'elenco delle lezioni.
È stata ufficializzata e pubblicata sul sito dello MPI forum la versione 2.1 dello standard MPI; useremo questa come riferimento, dato che raccoglie tutte le modifiche approvate negli anni (MPI 1.1, 1.2, 2.0, 1.3) in un unico documento.- Tutorial di utilizzo del compilatore Assist. Contattare il docente per la versione aggiornata a febbraio 2008. Vecchia versione:Tutorial ASSIST Febbraio 2007
Tutorial del server di esecuzione GEA, versione Novembre 2006. - (Dispense di ASE) — M. Vanneschi, Architetture Parallele e Distribuite. Servizio Editoriale Universitario, Università di Pisa, 2006-07.
- Brevi fotocopie e dispense distribuite durante il corso
Prerequisiti
Il corso assume come note le basi della programmazione parallela e distribuita, delle architetture di calcolo sequenziali e parallele e delle reti di interconnessione, ed una buona padronanza dei linguaggi C/C++ e Java.
Elenco delle lezioni
L'elenco delle lezioni svolte è disponibile alla pagina apposita.
Prove d'esame
Archivio dei Corsi di CCP 2006-07-08
CCP 2007/2008 | pagina Dokuwiki 07/08 | |
---|---|---|
CCP 2006/2007 | pagina web del docente | pagina Dokuwiki 06/07 |
CCP 2005/2006 | pagina web del docente |