Questa è una vecchia versione del documento!
Indice
Complementi di Calcolo Parallelo e Distribuito
Docente: Massimo Coppola
Questa Pagina è in fase di redazione per l'A.A. 2007-2008 Anche quest'anno il programma del corso sarà leggermente diverso rispetto a quello dell'anno precedente. È previsto un maggiore approfondimento sui processori multicore ed i problemi relativi alla loro programmazione.
Nel frattempo invito gli studenti
- a fare riferimento anche alla pagina del corso dell'anno accademico 2005-2006 : CCP 05-06
- a registrarsi per ricevere notifiche dalla pagina delle Corso di CCP : Novità.
Orario provvisorio delle lezioni
Lunedì | 14-16 | Aula B1 |
Giovedì | 11-13 | Aula B1 |
Aggiornato al 18/02/08
Ricevimento Di regola il ricevimento si svolge su appuntamento (meglio via e-mail). L'orario riportato è puramente indicativo.
Giovedì | 15-17 | Dipartimento stanza 385 |
Informazioni relative agli anni precedenti
CCP 2006/2007 | Pagina web del docente | pagina Dokuwiki |
CCP 2005/2006 | Pagina web del dogente |
Programma Preliminare
Il corso approfondisce i paradigmi di base e le tecniche della programmazione parallela, introducendo all'utilizzo sia di librerie di programmazione standard, a basso livello, sia di linguaggi di programmazione ad alto livello.
Nel corso vengono studiati da un punto di vista teorico, ed analizzati in pratica con esempi di applicazioni reali, i paradigmi di programmazione a scambio di messaggi ed a memoria condivisa. Tali paradigmi realizzativi sono applicati alle forme di parallelismo di base usate nella programmazione parallela e distribuita, e valutati in termini di performance teorica (analisi delle gerarchie di memoria, modelli di performance), pratica, di efficacia dal punto di vista del software engineering.
- Richiami di valutazione delle prestazioni in parallelo. Il paradigma a scambio di messaggi. Programmazione a basso livello: introduzione ad MPI, concetti base e funzionalità principali. Comunicatori, primitive punto a punto e collettive, tipi di dati.
- Problemi fondamentali: classi data parallel e task parallel, decomposizione del calcolo e bilanciamento del carico. Problemi regolari ed irregolari. Esempi di implementazione delle forme base di parallelismo (pipeline, farm, map, divide et impera …) in C/C++ ed MPI; valutazione delle prestazioni.
- La 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 / dischi; memoria locale / memoria condivisa. Cenni agli algoritmi per le gerarchie di memoria. Implementazione a software delle memorie condivise: Distributed Virtually Shared Memory. Contenimento e mascheramento della latenza di accesso. Tecniche di programmazione ed esempi di soluzione di problemi tramite memoria condivisa.
- Tra i possibili approfondimenti nella parte finale del corsi o argomenti di progetto: I/O parallelo, algoritmi memory-intensive e data mining parallelo; esempi di applicazioni complesse; applicazione delle metodologie alle piattaforme di griglia.
Materiale didattico
- B. Wilkinson, M. Allen Parallel Programming, 2nd edition. 2005, Prentice-Hall. Disponibile in Biblioteca la prima edizione, C.1.2 w74 INF .
Testo Principale.
- 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.
- Tutorial di utilizzo del compilatore Assist Tutorial ASSIST Febbraio 2007 e del server di esecuzione GEA, versione Novembre 2006.
- (Dispense di ASE) — M. Vanneschi, Architetture Parallele e Distribuite. Servizio Editoriale Universitario, Università di Pisa, 2004-05.
- Brevi fotocopie e dispense distribuite durante il corso
Prerequisiti
Si assume la conoscenza del linguaggio C o C++. Sono un prerequisito fondamentale i corsi di Architettura 1 e 2 :
- Architettura degli elaboratori (AE AA008)
- Architetture parallele e distribuite (ASE AA024)
Elenco delle lezioni
L'elenco del contenuto delle lezioni e' disponibile alla pagina apposita: CCP 07-08: elenco delle lezioni
Prove d'esame
L'esame può essere sostenuto in due modi
- in forma seminariale, con la presentazione ai colleghi di una relazione da produrre anche in forma scritta su un argomento concordato con il docente, che sviluppi il materiale trattato nel corso delle lezioni; tale modalita', salvo casi particolari, e' da considerarsi valida entro le date degli appelli di luglio.
- sotto forma di progetto individuale, ad esempio utilizzando uno dei sistemi software esaminati nel corso per implementare uno degli algoritmi studiati; si terrà conto della soluzione fornita in sé, ma anche della capacità del candidato di valutare aspetti vantaggiosi e svantaggiosi del particolare sistema scelto (si veda in proposito la tabella di valutazione usata nel corso del 2005-06). Sono in generale accettati (previa discussione) progetti implementativi in più ambienti diversi, tra cui MPI e ASSIST, con attenzione al confronto prestazionale ed espressivo tra gli ambienti scelti.
Elenco di possibili argomenti proposti a lezione
Ovviamente per quest'anno non è ancora stato proposto alcun argomento. Posso anticipare che vi saranno sicuramente proposte relative a modelli di calcolo ed esperimenti su processori multi-core.
Prove già assegnate
Studente | Argomento del Seminario/Progetto |