HIGH PERFORMANCE COMPUTING

Francesco MOSCATO HIGH PERFORMANCE COMPUTING

0622700073
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA MAGISTRALE
INGEGNERIA INFORMATICA
2020/2021



OBBLIGATORIO
ANNO CORSO 2
ANNO ORDINAMENTO 2017
SECONDO SEMESTRE
CFUOREATTIVITÀ
324LEZIONE
324ESERCITAZIONE
Obiettivi
L’insegnamento introduce lo studente alle caratteristiche delle architetture parallele, ai paradigmi di computazione parallela ed ai relativi linguaggi e framework.
Al termine del corso lo studente sara in grado di progettare algoritmi paralleli su architetture a memoria condivisa e distribuita utilizzando i linguaggi, gli strumenti e le tecnologie piu appropriate al contesto applicativo unitamente alla misurazione delle prestazioni e dell'efficienza delle soluzioni individuate.

Conoscenze e capacità di comprensione
Architetture ad elevate prestazioni. Architetture parallele e loro programmazione. Architetture a memoria distribuita. Cluster. GPU.

Conoscenze e capacità di comprensione applicate
Sviluppo di applicazioni per architetture a memoria condivisa e a memoria distribuita. Framework per lo sviluppo di applicazioni massivamente parallele secondo il paradigma Map/Reduce. Sviluppo di applicazioni parallele basate su GPU.
Prerequisiti
L'insegnamento richiede conoscenze sull'architettura dei calcolatori e sulla programmazione nei linguaggi C e Java.
Contenuti
Architetture ad elevate prestazioni: pipelining, architetture superscalari, hyperthreading. Architetture parallele: tassonomia di Flynn, sistemi a memoria condivisa e distribuita; GPGPU. Pattern per la programmazione parallela. Valutazione delle prestazioni di programmi paralleli: speedup, efficienza, scalabilita. (8/0/0)

Cenni Programmazione parallela su architetture a memoria condivisa con OpenMP. (4/0/8)

Cenni Programmazione parallela su architetture a memoria distribuita con MPI. (4/0/8)

Cluster programming con Hadoop/Map-Reduce. (6/0/12)

Programmazione di GPU. Cenni Programmazione parallela con OpenACC. (8/0/14)

TOTALE LEZ/ESE/LAB: 30/0/42
Metodi Didattici
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE, ED ESERCITAZIONI PRATICHE DI LABORATORIO.

La frequenza delle lezioni è obbligatoria. Per accedere all'esame finale, lo studente deve aver frequentato almeno il 70% delle ore di didattica frontale.
Verifica dell'apprendimento
LA VALUTAZIONE DEL RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI AVVERRÀ MEDIANTE LA REALIZZAZIONE DI UN PROGETTO DI GRUPPO ED UN COLLOQUIO ORALE. LA VALUTAZIONE TERRÀ CONTO DEI SEGUENTI ASPETTI:
CONOSCENZA DELLE TECNOLOGIE E DELLE METODOLOGIE PRESENTATE NEL CORSO; CAPACITÀ DI PROGETTARE, SVILUPPARE E VALUTARE UN ALGORITMO PARALLELO USANDO LE METODOLOGIE E GLI STRUMENTI PRESENTATI NEL CORSO.
Testi
Peter Pacheco, An Introduction to Parallel Programming, Morgan Kaufmann
I. Foster. Designing and Building Parallel Programs. Addison-Wesley
Jason Sanders, Edward Kandrot, CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley
Georg Hager, Gerhard Wellein, Introduction to High Performance Computing for Scientists and Engineers, CRC Press
Altre Informazioni
Il corso è tenuto in lingua inglese.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2022-05-23]