| | | 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