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

