Strumenti Utente

Strumenti Sito


ccp:start

Complementi di Calcolo Parallelo e Distribuito

Docente: Massimo Coppola

Questa pagina è relativa al corso di CCP per l'A.A. 2007-2008

Per il corso 2008-2009 si invitano gli studenti a fare riferimento
alla pagina del corso di CCP 08/09 del Prof. Danelutto.

Il programma del corso di CCP 2008-2009 sarà in buona parte diverso rispetto agli anni precedenti; molti degli argomenti del vecchio corso di CCP saranno invece ripresi nel corso di Applicazioni Parallele e Distribuite, che è riattivato per l'A.A. 2008-2009.


Corso di CCP Anno 2007-2008

Il supercomputer Marenostrum, BSC Barcelona, Spagna.

Orario delle lezioni

Lunedì 14-16 Aula B1
Giovedì 11-13 Aula B1

Aggiornato al 03/03/08

Ricevimento Di regola il ricevimento si svolge su appuntamento (meglio via e-mail). L'orario riportato è indicativo.

Giovedì 15-17 Dipartimento stanza 385

Vecchia pagina degli annunci: Corso di CCP : Novità

Informazioni relative agli anni precedenti

Programma Preliminare

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.

Materiale didattico

  • B. Wilkinson, M. Allen Parallel Programming, 2nd edition. 2005, Prentice-Hall. Disponibile in Biblioteca la prima edizione, C.1.2 w74 INF . Testo Principale.
  • A. Grama, A. Gupta, G. Karypis, V. Kumar Introduction to Parallel Computing, 2nd edition. 2003, Addison Wesley. Disponibile in Biblioteca la prima edizione D.1.3 k96 INF

Solo alcune parti, specificate a lezione.

  • Standard MPI, versione 1.1

Solo le parti specificate nell'elenco delle lezioni.

  • Tutorial di utilizzo del compilatore Assist. Contattare il docente per la versione aggiornata a febbraio 2008. Vecchia versione:Tutorial ASSIST Febbraio 2007
    Tutorial del server di esecuzione GEA, versione Novembre 2006.
  • (Dispense di ASE) — M. Vanneschi, Architetture Parallele e Distribuite. Servizio Editoriale Universitario, Università di Pisa, 2006-07.
  • Brevi fotocopie e dispense distribuite durante il corso

Prerequisiti

Si assume la conoscenza del linguaggio C o C++. Sono un prerequisito fondamentale i corsi di Architettura 1 e 2 :

  • Architettura degli elaboratori (AE AA008)
  • Architetture parallele e distribuite (ASE AA024)

Elenco delle lezioni

L'elenco delle lezioni svolte è disponibile alla pagina apposita.

Prove d'esame

L'esame può essere sostenuto in due modi

  • in forma seminariale, con la presentazione ai colleghi di una relazione da produrre anche in forma scritta su un argomento concordato con il docente, che sviluppi il materiale trattato nel corso delle lezioni; tale modalita', salvo casi particolari, e' da considerarsi valida entro le date degli appelli di luglio.
  • sotto forma di progetto individuale, ad esempio utilizzando uno dei sistemi software esaminati nel corso per implementare uno degli algoritmi studiati; si terrà conto della soluzione fornita in sé, ma anche della capacità del candidato di valutare aspetti vantaggiosi e svantaggiosi del particolare sistema scelto (si veda in proposito la tabella di valutazione usata nel corso del 2005-06). Sono in generale accettati (previa discussione) progetti implementativi in più ambienti diversi, tra cui MPI e ASSIST, con attenzione al confronto prestazionale ed espressivo tra gli ambienti scelti.
Elenco di possibili argomenti proposti a lezione

Ovviamente per quest'anno non è ancora stato proposto alcun argomento; vi saranno sicuramente proposte relative a modelli di calcolo ed esperimenti su processori multi-core.

Prove assegnate

Studente Argomento del Seminario/Progetto
D. Buono Confronto tra modelli di programmazione per GPU : CUDA e Brooks+. Eventuale confronto con altri paradigmi stream : Assist, X10…
L. Puccini La libreria a skeleton per multicore Blocklibs. Confronto con altri formalismi a skeleton (p.es. eskel)
M. Parchi Il paradigma Map&Reduce e la sua implementazione su diverse architetture.

I criteri di confronto tra ambienti di programmazione diversi sono riassunti alla pagina Materiale di riferimento per CCP

ccp/start.txt · Ultima modifica: 03/03/2009 alle 21:20 (16 anni fa) da Massimo Coppola

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki