Corsi di Laurea Corsi di Laurea Magistrale Corsi di Laurea Magistrale
a Ciclo Unico
Scuola di Ingegneria
INGEGNERIA INFORMATICA
Insegnamento
CALCOLO PARALLELO
IN02119427, A.A. 2017/18

Informazioni valide per gli studenti immatricolati nell'A.A. 2017/18

Principali informazioni sull'insegnamento
Corso di studio Corso di laurea magistrale in
INGEGNERIA INFORMATICA
IN0521, ordinamento 2009/10, A.A. 2017/18
N0
porta questa
pagina con te
Crediti formativi 9.0
Tipo di valutazione Voto
Denominazione inglese PARALLEL COMPUTING
Dipartimento di riferimento Dipartimento di Ingegneria dell'Informazione (DEI)
Sito E-Learning https://elearning.dei.unipd.it/course/view.php?idnumber=2017-IN0521-000ZZ-2017-IN02119427-N0
Obbligo di frequenza No
Lingua di erogazione ITALIANO
Sede PADOVA
Corso singolo È possibile iscriversi all'insegnamento come corso singolo
Corso a libera scelta È possibile utilizzare l'insegnamento come corso a libera scelta

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 I Anno
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 26/02/2018
Fine attività didattiche 01/06/2018

Commissioni d'esame
Commissione Dal Al Membri
8 A.A. 2017/2018 01/10/2017 15/03/2019 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)

Syllabus
Prerequisiti: Si assumono buone conoscenze delle seguenti materie:
- 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 ed analisi 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
  • T. F. 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
  • John L. Hennessy and David A. Patterson, Computer Architecture - A quantitative Approach. --: Morgan Kaufmann Publishers, 2002. Approfondisce le architetture di processori che estraggono parallelismo implicito nei programmi Cerca nel catalogo