Francesco MOSCATO | HIGH PERFORMANCE COMPUTING
Francesco MOSCATO HIGH PERFORMANCE COMPUTING
cod. 0622700073
HIGH PERFORMANCE COMPUTING
0622700073 | |
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA | |
CORSO DI LAUREA MAGISTRALE | |
INGEGNERIA INFORMATICA | |
2023/2024 |
OBBLIGATORIO | |
ANNO CORSO 1 | |
ANNO ORDINAMENTO 2022 | |
PRIMO SEMESTRE |
SSD | CFU | ORE | ATTIVITÀ | |
---|---|---|---|---|
ING-INF/05 | 3 | 24 | LEZIONE | |
ING-INF/05 | 3 | 24 | ESERCITAZIONE | |
ING-INF/05 | 3 | 24 | LABORATORIO |
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 | |
---|---|
Unità didattica 1: Introduzione al Calcolo Parallelo e Modelli (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/2/0) - 1 (3 ORE Lezione): Architetture ad elevate prestazioni: pipelining, architetture superscalari, hyperthreading. Architetture parallele: tassonomia di Flynn, sistemi a memoria condivisa e distribuita; GPGPU - 2 (3 ORE Lezione): Valutazione delle prestazioni di programmi paralleli: speedup, efficienza, scalabilità. - 3 (2 ORE Esercitazione): Esercitazione sul Calcolo di SpeedUp ed Efficienza CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Conoscenze di modelli e tecniche per il calcolo parallelo con diversi paradigmi e valutazione analitica di speedup ed efficienza CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper valutare lo speed-up di una soluzione parallela valutandone efficienza e scalabilità Unità didattica 2: Shared Memory ed OpenMP (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/0/6) - 1 (3 ORE Lezione): Programmazione Parallela con Modello Shared Memory, Introduzione a OpenMP - 2 (3 ORE Lezione): OpenMP, API, gestione della memoria e dei file, Concetti avanzati e ottimizzazione - 3 (3 ORE Laboratorio): Utilizzo di OpenMP per l'implementazione di algoritmi di calcolo algebrico - 4 (3 ORE Laboratorio): Utilizzo di OpenMP per l'implementazione di algoritmi di calcolo scientifico CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Conoscenze di modelli e tecniche per il calcolo parallelo basato su paradigmi Shared Memory e del framework OpenMP CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Utilizzo di OpenMP per la realizzazione di versioni parallele di algoritmi di calcolo scientifico Unità didattica 3: Message Passing ed MPI (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/0/6) - 1 (3 ORE Lezione): Programmazione Parallela con Modello Message Passing, Introduzione a MPI - 2 (3 ORE Lezione): MPI, API, gestione della memoria distribuita e dei file, Concetti avanzati e ottimizzazione - 3 (3 ORE Laboratorio): Utilizzo di MPI per l'implementazione di algoritmi di calcolo algebrico - 4 (3 ORE Laboratorio): Utilizzo di MPI per l'implementazione di algoritmi di calcolo scientifico CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Conoscenze di modelli e tecniche per il calcolo parallelo basato su paradigmi Message Passing e del framework MPI CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Utilizzo di MPI per la realizzazione di versioni parallele e distribuite di algoritmi di calcolo scientifico Unità didattica 4: GPGPU e CUDA (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 9/0/7) - 1 (3 ORE Lezione): Programmazione Parallela con CUDA per GPGPU, Introduzione a CUDA e al framework Google Colab - 2 (3 ORE Lezione): CUDA, API, gestione dei kernel, thread, Memoria globale, shared; ottimizzazione della distribuzione dei kernel sulle SM - 2 (3 ORE Lezione): CUDA: Aspetti avanzati. Ottimizzazione dei kernel, utilizzo di shared e texture memory, ottimizzazione dello scambio dei dati da host a device, profiling con nprof - 3 (3 ORE Laboratorio): Appllicazione delle librerie CUDA per la soluzione di colcoli matriciali - 4 (2 ORE Laboratorio): Ottimizzazione su shared e texture memory, ottimizzazione dei dati e interleaving host-cpu; valutazione delle prestazioni con nprof - 5 (2 ORE Laboratorio): valutazione delle prestazioni con nprof CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Conoscenze di modelli e tecniche per il calcolo parallelo basato su paradigmi CUDA CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Utilizzo di CUDA per la realizzazione di versioni parallele e distribuite di algoritmi di calcolo scientifico Unità didattica 5: Gestione di Big Data con Hadoop e Spark (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/0/6) - 1 (3 ORE Lezione): Introduzione ai Big Data, Map-Reduce - 2 (3 ORE Lezione): Map-Reduce Patterns, Apache Hadoop, HDFS e SPARK - 3 (3 ORE Laboratorio): Utilizzo di Docker per realizzazione di un CLuster Hadoop e SPARK - 4 (3 ORE Laboratorio): Esempi di programmazione distribuita basata su paradigmi MAP-Reduce su cluster Hadoop e Spark CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Conoscenze di modelli e tecniche per l'analisi di big data basato su paradigmi Map-Reduce su Hadoop e Spark CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Utilizzo di Hadoop e Spark per la realizzazione di versioni distribuite di algoritmi di analisi dei BIG Data Unità didattica 6: Progetto (ORE LEZIONE/ESERCITAZIONE/LABORATORIO 0/0/12) - 1 (9 ORE Laboratorio): Progettazione di un sistema parallelo per calcolo scientifico applicato ad un algoritmo di calcolo numerico noto: valutazione delle prestazioni nei casi di utilizzo di OpenMP, MPI e Cuda - 2 (3 ORE Laboratorio): Progettazione di un sistema basato su Hadoop e Spark per l'implementazione di un problema di analisi di Big Data. CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Progettare, Realizzare e valutare le prestazioni di soluzioni parallele e distribuite a problemi di calcolo scientifico e analisi di Big Data TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO 33/2/37 |
Metodi Didattici | |
---|---|
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE, ED ESERCITAZIONI PRATICHE DI LABORATORIO. |
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 TOM WHITE, HADOOP: THE DEFINITIVE GUIDE, 4TH EDITION, 2015, O'REILLY, ISBN: 978-1491901632 BILL CHAMBERS, MATEI ZAHARIA, SPARK: THE DEFINITIVE GUIDE, 2018, O'REILLY, ISBN: 978-1491912218 |
Altre Informazioni | |
---|---|
Il corso è tenuto in lingua inglese. |
BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-11-05]