HIGH PERFORMANCE COMPUTING

Informatica HIGH PERFORMANCE COMPUTING

0522500136
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA MAGISTRALE
INFORMATICA
2022/2023

ANNO ORDINAMENTO 2016
SECONDO SEMESTRE
CFUOREATTIVITÀ
648LABORATORIO
Obiettivi
L’OBIETTIVO FORMATIVO DELL’INSEGNAMENTO È LA CREAZIONE DI COMPETENZE SULLA PROGRAMMAZIONE, GLI ALGORITMI, LE APPLICAZIONI E LE ARCHITETTURE LEGATE AL CALCOLO AD ALTE PRESTAZIONI (HIGH PERFORMANCE COMPUTING).

CONOSCENZE E CAPACITÀ DI COMPRENSIONE: L’INSEGNAMENTO PUNTA A FAR ACQUISIRE ALLE STUDENTESSE E AGLI STUDENTI CONOSCENZE SULLE TECNICHE DI PROGRAMMAZIONE PER SISTEMI HPC. IN PARTICOLARE, PUNTA A SVILUPPARE LE SEGUENTI CONOSCENZE
• ARCHITETTURE HPC
• MODELLI DI PROGRAMMAZIONE PER HPC E PARALLEL PROGRAMMING PATTERNS
• PROGRAMMAZIONE SHARED MEMORY (OPENMP)
• PROGRAMMAZIONE ETEROGENA E GPU (CUDA/OPENCL/SYCL)
• PROGRAMMAZIONE DISTRIBUTED MEMORY (MPI)
• VETTORIZZAZIONE (INTRINSICS)
• TECNICHE DI OTTIMIZZAZIONE E TUNING PER PROGRAMMI PARALLELI
• COMPILAZIONE PER HPC E PARALLELIZZAZIONE AUTOMATICA
• APPLICAZIONI HPC

CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONI: IL CORSO MIRA A SVILUPPARE NEGLI STUDENTI E STUDENTESSE LE SEGUENTI CAPACITÀ:
• SAPER PROGRAMMARE UN’APPLICAZIONE MULTICORE CON OPENMP
• SAPER PROGRAMMARE UN’APPLICAZIONE GPU ED ETEROGENA
• SAPER PROGRAMMARE UN’APPLICAZIONE DISTRIBUITA CON MPI
• RICONOSCERE E APPLICARE PARALLEL PATTERN NELLA PROGRAMMAZIONE DI UN’APPLICAZIONE PARALLELA E DISTRIBUITA
• SAPER ANALIZZARE E MIGLIORARE L’IMPATTO DEL COMPILATORE IN CODICI HPC
• SAPER APPLICARE TECNICHE DI OTTIMIZZARE IN PROGRAMMA PARALLELO O DISTRIBUITO
Prerequisiti
IL CORSO SI RIVOLGE A STUDENTI CON BUONE CONOSCENZE DELLA LINGUA INGLESE TECNICA, E BUONE CONOSCENZE DI
-PROGRAMMAZIONE C IN AMBIENTE UNIX/LINUX
-ALGORITMI E STRUTTURE DATI
-ARCHITETTURA DEGLI ELABORATORI
Contenuti
L'INSEGNAMENTO È DIVISO IN QUATTRO MODULI, PER UN TOTALE DI 48 ORE DI LABORATORIO.

MODULO PROGRAMMAZIONE MULTICORE, 12 ORE:
-PROGRAMMAZIONE OPENMP
-CACHE E FALSE SHARING
-PARALLELISMO SU TASK
-PARALLELISMO ANNIDATO E ARCHITETTURE NUMA
-DESIGN PATTERN PARALLELI

MODULO PROGRAMMAZIONE VETTORIALE, 12 ORE
-PROGRAMMAZIONE CON INTRINSICS INTEL AVX
-DIRETTIVE SIMD DI OPENMP
-COMPILAZIONE E VETTORIZZAZIONE AUTOMATICA
-PROGRAMMAZIONE VLA CON INTRINSICS ARM SVE
-PATTERN DI REORGANIZZAZIONE DEI DATI

MODULO PROGRAMMAZIONE ETEROGENEA E SU GPU, 12 ORE:
-PROGRAMMAZIONE OPENCL E SYCL
-ARCHITETTURA GPU: MODELLO DELLA MEMORIA, MODELLO DEI THREAD, OTTIMIZZAZIONI
-DESIGN PATTERN PARALLELI OTTIMIZZATI PER GPU
-ELEMENTI DI PROGRAMMAZIONE CUDA E HIP

MODULO SU ARGOMENTI AVANZATI, 12 ORE:
-ROOFLINE MODEL
-BENCHMARKING
-COMPILAZIONE PER HIGH PERFORMANCE COMPUTING
-AUTOTUNING
-OTTIMIZZAZIONE PER CONSUMO ENERGETICO E CALCOLO APPROSSIMATO
-CONCETTI AVANZATI DI MPI

Metodi Didattici
IL CORSO PREVEDE 48 ORE DI LABORATORIO.

IN OGNI LEZIONE, GLI/LE STUDENTI/STUDENTESSE APPRENDERANNO CONOSCENZE DI ARCHITETTURE E MODELLI DI PROGRAMMAZIONE PER IL CALCOLO AD ALTE PRESTAZIONI, SEGUITE DA ESERCIZI DI PROGRAMMAZIONE DOVE POSSONO APPLICARE LE CONOSCENZE ACQUISITE PROGRAMMANDO SU PIATTAFORME PARALLELE.

IL MATERIALE DIDATTICO INCLUDE LE SLIDES PRESENTATE AL CORSO, MATERIALE AGGIUNTIVO PRESENTE NEI LIBRI DI TESTI SUGGERITI, UNA LISTA DI PUBBLICAZIONI SCIENTIFICHE, A CUI SI AGGIUNGONO I CODICI DI RIFERIMENTO PER GLI ESERCIZI.

IL CORSO PREVEDE UN PROGETTO FINALE CHE VERRÀ VALUTATO E CONTRIBUIRÀ AL VOTO FINALE. LA FREQUENZA E FORTEMENTE CONSIGLIATA.
Verifica dell'apprendimento
È PREVISTA UNA PROVA SCRITTA E UN PROGETTO. IL VOTO FINALE È UNA MEDIA PESATA DELLE DUE PROVE.

LA PROVA SCRITTA COMPRENDE ESERCIZI CHE COPRONO TUTTI E QUATTRO MODULI DEL CORSO. LA PROVA SCRITTA E' ACCESSIBILE AGLI STUDENTI CHE HANNO INVIATO IL PROGETTO ALLA DATA DI APPELLO.

IL PROGETTO, IL CUI ARGOMENTO VIENE DEFINITO DAL DOCENTE, SI CONCENTRA SU UN ARGOMENTO SPECIFICO LEGATO AL CALCOLO AD ALTE PRESTAZIONI. AD ESEMPIO: LA RISOLUZIONE DI UN PROBLEMA SU UNA DATA ARCHITETTURA PARALLELA; L'ESPLORAZIONE DI UNA CARATTERISTICA HARDWARE; UN'ANALISI QUANTITATIVA DI UN ALGORITMO ESISTENTE. PRATICAMENTE, IL PROGETTO COMPRENDE IL CODICE SORGENTE E UN BREVE REPORT.
Testi
-STRUCTURED PARALLEL PROGRAMMING: PATTERNS FOR EFFICIENT COMPUTATION. MORGAN KAUFMANN. MICHAEL MCCOOL, ARCH D. ROBISON, JAMES REINDERS. 2012. ISBN 0124159931
-THE OPENMP COMMON CORE. BY TIMOTHY G. MATTSON, YUN (HELEN) HE AND ALICE E. KONIGES. 2019, MIT PRESS
-JASON SANDERS, EDWARD KANDROT, CUDA BY EXAMPLE: AN INTRODUCTION TO GENERAL-PURPOSE GPU PROGRAMMING, ADDISON-WESLEY, 2010, ISBN 978-0131387683
-PETER PACHECO, AN INTRODUCTION TO PARALLEL PROGRAMMING, MORGAN KAUFMANN, 2011, ISBN 978-0123742605
-DATA PARALLEL C++. MASTERING DPC++ FOR PROGRAMMING OF HETEROGENEOUS SYSTEMS USING C++ AND SYCL. AUTHORS: REINDERS, J., ASHBAUGH, B., BRODMAN, J., KINSNER, M., PENNYCOOK, J., TIAN, X. 2021. ISBN 978-1-4842-5574-2
Altre Informazioni
SULLA PIATTAFORMA DI DIPARTIMENTO SONO DISPONIBILI INFORMAZIONI PER OGNI LEZIONE, LE SLIDES, I CODICI DEGLI ESEMPI, GLI ARTICOLI DI RIFERIMENTO, E ALTRO MATERIALE DI SUPPORTO
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2022-08-05]