Strumenti Utente

Strumenti Sito


apd:start

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


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

apd/start.txt · Ultima modifica: 05/03/2009 alle 20:11 (9 anni fa) da Massimo Coppola