2006-2007 Complementi di Calcolo Parallelo e Distribuito
Attenzione: questa pagina è non è aggiornata, quest'anno la pagina del corso si trova sul dokuwiki del corso di studi.
Questa pagina sarà usata solo per rendere disponibili archivi di grandi dimensioni non appropriati alla distribuzione via wiki.
Annunci relativi al corso
Archivio
-
-
- 16/02/2007
- Prima lezione lunedì 19 Febbraio. È possibile concordare un orario differente da quello provvisorio. Si pregano perciò gli studenti interessati al corso di essere presenti per la presentazione del corso.
- 20/01/2007
- La pagina del corso è in preparazione. Lo schema generale del corso è in prima approssimazione quello dello scorso anno.
- 17/04/2007
- Ho aggiunto su questa pagina la versione di prova del compilatore Assist per architetture X86 / 64 bit.
Informazioni
- Orario Preliminare:
Giorno | Ora | Aula |
Lunedì | 14-16 | B1 |
Giovedì | 11-13 | D1 |
- Programma:
-
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.
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.
- 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.
Seminari e progetti di fine corso
Link e informazioni utili
Versione pre-release del compilatore Assist per macchine x86/64 bit.
L'archivio astCC1_3-arch64.tgz contiene una versione del compilatore non è ancora da considerarsi stabile.
Non è detto che compili su architetture non 64 bit; è stato provato su distribuzioni Linux Centos, Gentoo e Ubuntu; è in corso il backporting delle modifiche nel compilatore principale.
Il file configurazione-64.tgz contiene una configrazione di esempio del compilatore per architetture a 64 bit. In particolare vanno utilizzati i tag che abilitano l'uso delle librerie corrette per la compilazione e il link a 64bit.