elenco   
        corso   

Applicazioni Parallele e Distribuite

Codice: AA277Crediti: 6Semestre: 2Sigla: APD 
 
Settore disciplinare: INF/01 - Informatica

Docente

Massimo Coppola   massimo.coppola@isti.cnr.it  Home Page di Massimo Coppola  Tel. 0502212700

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.

Obiettivi di apprendimento

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.
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.
Capacità. 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.

Descrizione

Il corso fornisce la conoscenza teorica e tecnologica di strumenti di programmazione di diverso livello di astrazione ed ambito applicativo, attraverso la presentazione di casi applicativi importanti. 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).

English Description

The course provides theoretical and technological knowledge about programming tools covering different abstraction levels and application targets by presenting a number of application cases. The programming models discussed vary in the kind and level of abstraction (message passing vs shared memory, primitive-based vs skeleton and pattern based) and for the execution platform (on-chip parallelism, cluster-level parallelism, Grid/Cloud Computing)

Indicazioni metodologiche

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.

Programma

Un programma più dettagliato sarà disponibile all'inizio delle lezioni sul wiki della didattica http://www.cli.di.unipi.it/doku/doku.php
  1. 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.
  2. Programmazione parallela ad alto livello: l'ambiente ASSIST. Utilizzo delle forme di parallelismo base in Assist. Esempi di applicazioni e valutazione delle prestazioni.
  3. 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.
  4. Architetture stream-oriented, multicore generici e dedicati e forme di programmazione.
  5. Piattaforme di calcolo distribuito: Grid Computing, Cloud Computing, Sistemi operativi distribuiti, reti di sistemi mobili. Problematiche di realizzazione ed esempi di applicazione.
  6. 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.
     

Bibliografia

Modalità di esame

L'esame finale prevede la realizzazione di un progetto individuale, da concordarsi con il docente, e la sua successiva discussione, eventualmente in forma seminariale.

home


email