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

Prima dell'inizio del corso si terrà una riunione preliminare con gli studenti interessati, per chiarire scopo ed organizzazione del corso stesso, discutere le modalità dell'esame finale e presentare un insieme di argomenti per tesi di laurea.

La riunione si svolgerà al Dipartimento di Informatica in aula Seminari Ovest, il 1 febbraio alle ore 12.00. In caso di problemi contattare il docente via posta elettronica.

Ulteriori informazioni ed annunci relativi al corso verranno pubblicati sulla pagina web del docente http://www.di.unipi.it/~coppola/didattica/ccp0506/


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


home


email