Insegnamento
CALCOLO PARALLELO
IN02119427, A.A. 2013/14

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea magistrale in
INGEGNERIA INFORMATICA
IN0521, ordinamento 2009/10, A.A. 2013/14
1086842
Crediti formativi 9.0
Denominazione inglese PARALLEL COMPUTING
Dipartimento di riferimento Dipartimento di Ingegneria dell'Informazione (DEI)
Obbligo di frequenza No
Lingua di erogazione ITALIANO
Sede PADOVA

Docenti
Responsabile GIANFRANCO BILARDI ING-INF/05

Dettaglio crediti formativi
Tipologia Ambito Disciplinare Settore Scientifico-Disciplinare Crediti
CARATTERIZZANTE Ingegneria informatica ING-INF/05 9.0

Modalità di erogazione
Periodo di erogazione Secondo semestre
Anno di corso A scelta dello studente
Modalità di erogazione frontale

Organizzazione della didattica
Tipo ore Crediti Ore di
Corso
Ore Studio
Individuale
Turni
LEZIONE 9.0 72 153.0 Nessun turno

Calendario
Inizio attività didattiche 03/03/2014
Fine attività didattiche 14/06/2014

Commissioni d'esame
Commissione Dal Al Membri
8 A.A. 2015/2016 01/10/2015 30/09/2017 BILARDI GIANFRANCO (Presidente)
PIETRACAPRINA ANDREA ALBERTO (Membro Effettivo)
COMIN MATTEO (Supplente)
FANTOZZI CARLO (Supplente)
PESERICO STECCHINI NEGRI DE SALVI ENOCH (Supplente)
PUCCI GEPPINO (Supplente)
SATTA GIORGIO (Supplente)
7 A.A. 2015/2016 01/10/2015 15/03/2017 VANDIN FABIO (Presidente)
PIETRACAPRINA ANDREA ALBERTO (Membro Effettivo)
FANTOZZI CARLO (Supplente)
PUCCI GEPPINO (Supplente)
6 A.A. 2014/2015 01/10/2014 15/03/2016 BILARDI GIANFRANCO (Presidente)
PIETRACAPRINA ANDREA ALBERTO (Membro Effettivo)
COMIN MATTEO (Supplente)
FANTOZZI CARLO (Supplente)
PESERICO STECCHINI NEGRI DE SALVI ENOCH (Supplente)
PUCCI GEPPINO (Supplente)
SATTA GIORGIO (Supplente)
01/10/2013 15/03/2015 BILARDI GIANFRANCO (Presidente)
FANTOZZI CARLO (Membro Effettivo)
PIETRACAPRINA ANDREA ALBERTO (Supplente)
PUCCI GEPPINO (Supplente)
4 2012 01/10/2012 15/03/2014 BILARDI GIANFRANCO (Presidente)
FANTOZZI CARLO (Membro Effettivo)
PESERICO STECCHINI NEGRI DE SALVI ENOCH (Supplente)
PIETRACAPRINA ANDREA ALBERTO (Supplente)
PUCCI GEPPINO (Supplente)

Syllabus
Prerequisiti: - Progetto ed analisi di algoritmi sequenziali
- Programmazione di algoritmi sequenziali
- Architetture degli elaboratori con processore seriale
- Teoria della computatione
Conoscenze e abilita' da acquisire: - Il corso si propone di fornire un quadro teorico per la progettazione e l'utilizzo efficiente dei sistemi di calcolo parallelo, con applicazioni ai multiprocessori, alle schede grafiche (GPU), ai sistemi riconfigurabili (FPGA), e ai sistemi di supercalcolo.
- Le tematiche principali affrontate sono: progettazione edanalisi di algoritmi paralleli, analisi di architetture parallele, programmazione parallela (con attivita' di laboratorio), ottimizzazione congiunta di algoritmo e architettura nella realizzazione mediante circuiti integrati.
Modalita' di esame: E' prevista una prova scritta ed un eventuale approfondimento orale. Il voto d'esame tiene anche conto dei delle attivita' di laboratorio di progammazione parallela.
Criteri di valutazione: La valutazione della preparazione dello studente si basa sul livello di padronanza dei concetti e dei metodi presentati nelle lezioni. Particolare enfasi viene posta sulla capacita' di risolvere problemi che richiedono un certo livello di creativita' per essere ricondotti ai concetti e metodi acquisiti nel corso.
Contenuti: - L'evoluzione verso il parallelismo dei sistemi di calcolo ed il ruolo di algoritmi, linguaggi di programmazione, architetture degli elaboratori e tecnologie dei circuiti integrati.
- Parallelismo implicito, sfruttato da compilatori e processori. Parallelismo nell'organizzazione dei microprocessori: architetture superscalari e "very long instruction word". Accenni alle tecniche di "branch prediction", "register renaming" e "dynamic scheduling".
- Elementi di algoritmica parallela. Quantificazione del parallelismo di un algoritmo. Lavoro e cammino critico di un algoritmo. Legge di Brent. Progettazione ed analisi delle prestazioni di algoritmi paralleli. Algoritmi per vari problemi computazionali tra cui il calcolo di funzioni associative, il calcolo dell'evoluzione di sistemi dinamici finiti, le operazioni base dell'algebra lineare, la fusione e l'ordinamento di sequenze, la trasformata di Fourier, l'istradamento dei messaggi in una rete.
- Linguaggi di programmazione per il parallelismo. Introduzione a MPI.
- Struttura e funzionamento delle macchine parallele. Reti di
processori. Topologie di interconnessione: "array" lineare, anello, "mesh", toro, "array" multidimensionali, ipercubo, "shuffle-exchange", "cube-connected cycles", albero, "fat-tree". Metriche di diametro e banda di una rete.
- Istradamento dei messaggi: tecniche di routing per varie topologie. Teoria dell'"embedding" e della simulazione tra macchine parallele. Metriche di carico, dilatazione e congestione di un "embedding". Sistemi di memoria gerarchica e distribuita.
- La complessita' delle realizazione mediante circuiti VLSI ("Very Large Scale Integration"). Concetto di layout. Area e volume delle reti e loro relazione con le metriche di banda. Complessita' area-tempo dei problemi computationali. Reti universali.
Attivita' di apprendimento previste e metodologie di insegnamento: - L'insegnamento si basa su lezioni frontali e su attivita' di laboratorio di progammazione parallelo.
- Oltre a presentare i contenuti del corso, le lezioni dedicano spazio significativo al processo di sviluppo delle idee e del loro utilizzo innovativo, in contesti differenti da quello nel quale sono state apprese.
- I testi di esame delle annate precedenti vengono messi a disposizione degli allievi, per fornire un campione di problemi che mettono alla prova sia la conoscenza dei contenuti specifici del corso sia le capacita' generali di "problem solving".
Eventuali indicazioni sui materiali di studio: Sebbene siano disponibili numerosi buoni testi su singoli aspetti del calcolo parallelo, la sintesi ed integrazione tra tali aspetti fornita dalle lezioni non e' immediatamente reperibile in letteratura. Si consiglia pertanto di seguire le lezioni e prendere note accurate. Alcuni testi di riferimento sono comunque indicati in seguito.
Testi di riferimento:
  • D. Culler and J.P. Singh, Parallel Computer Architecture: A Hardware/Software Approach. San Francisco, California, USA: Morgan Kaufmann Publishers, 1998. Cura particolarmente gli aspetti sistemistici delle macchine parallele Cerca nel catalogo
  • Joseph Ja'Ja', An Introduction to Parallel Algorithms. --: Addison Wesley, 1992. Buona introduzione all'algoritmica parallela su modelli di calcolo che ignorano il costo delle comunicazioni Cerca nel catalogo
  • F. Thomson Leighton, Introduction to Parallel Algorithms and Architectures: Arrays - Trees - Hypercubes. San Francisco, California, USA: Morgan Kaufmann Publishers, 1992. Analizza la relazione tra algoritmi ed architetture, con particolare riguardo alla ottimizzazione del costo delle comunicazioni Cerca nel catalogo