2006-2007  Complementi di Calcolo Parallelo e Distribuito


Annunci    Informazioni    Calendario delle lezioni    Seminari e Progetti    Link utili

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 

Titolare:
Massimo Coppola
Pagina Web Ufficiale:
Link alla segreteria didattica
Orario di ricevimento:
Mercoledì 15-17, o su appuntamento (via e-mail).
Orario Preliminare:

Giorno OraAula
Lunedì 14-16B1
Giovedì 11-13D1
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.

  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.

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.


Turn back to the home page Ultimo aggiornamento: 18 Maggio 2006