elenco   
        corso   

Complementi di Calcolo Parallelo e distribuito

Codice: AA279Crediti: 6Semestre: 2Sigla: CCP 
 
Settore disciplinare: INF/01 - Informatica

Docente

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

Prerequisiti

Sono un prerequisito fondamentale i corsi di Architettura 1 e 2 :

Si assume la conoscenza del linguaggio C o C++.

Obiettivi di apprendimento

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.

L'obiettivo è fornire le basi necessarie a sviluppare programmi paralleli secondo una metodologia strutturata, valutando quantitativamente le diverse soluzioni possibili in termini di performance e portabilità, anche relativamente all'architettura hw/sw di esecuzione.

Descrizione

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. L'obiettivo Ŕ fornire le basi necessarie a sviluppare programmi paralleli secondo una metodologia strutturata e modulare, valutando quantitativamente le diverse soluzioni possibili in termini di performance e portabilitÓ, anche relativamente all'architettura hw/sw di esecuzione.

English Description

The course teaches the basic paradigms and programming techniques for parallel and distributed programming, with low-level as well as high-level tools (from libraries to programming environments). We study both the message passing and the shared-memory paradigm, analysing several real application examples. Our target is to provide the students with the essential knowledge to develop parallel programs according to a structured and modular approach, and to quantitatively evaluate different design solutions with respect to performance and portability with the changing hw/sw execution environment.

Programma

  1. 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.
  2. 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.
  3. La programmazione parallela ad alto livello: l'ambiente ASSIST. Utilizzo delle forme di parallelismo base in Assist. Esempi di applicazioni e valutazione delle prestazioni.
  4. 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.
  5. 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.
     

Bibliografia

Modalità di esame

Attenzione Il programma del corso per l'anno 2006-07 potrebbe variare.

ALtre informazioni sul corso 2005/2006 sono pubblicate alla pagina pagina web del docente http://www.di.unipi.it/~coppola/didattica/ccp0506/. Ulteriori informazioni ed annunci relativi al corso 2006/2007 verranno pubblicati sulla pagina web http://www.di.unipi.it/~coppola/didattica/ccp0607/


Ulteriore pagina web del corso: http://www.di.unipi.it/~coppola/didattica/ccp0506/


home


email