| | | corso | | | |
Complementi di Calcolo Parallelo e distribuito
Codice: | AA279 | Crediti: | 6 | Semestre: | 2 | Sigla: | CCP | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Massimo Coppola
Tel. 0502212700Prerequisiti
Sono un prerequisito fondamentale i corsi di Architettura 1 e 2 :
-
Architettura degli elaboratori (AE AA008)
-
Architetture parallele e distribuite (ASE AA024)
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
- 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.
Bibliografia
- B. Wilkinson, M. Allen Parallel Programming, 2nd edition. 2005, Prentice-Hall.
- A. Grama, A. Gupta, G. Karypis, V. Kumar Introduction to Parallel Computing, 2nd edition. 2003, Addison Wesley.
- Tutorial di utilizzo del compilatore Assist
- Brevi fotocopie e dispense distribuite durante il corso
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/