| SISTEMI DI CALCOLO PARALLELO E APPLICAZIONI
(obiettivi)
OBIETTIVI FORMATIVI:
L'’insegnamento di propone di fornire le nozioni fondamentali, i principi architetturali e le metodologie e per la programmazione in ambienti di calcolo parallelo, con particolare enfasi ai modelli di programmazione ed agli strumenti di programmazione più comunemente usati. Il corso copre tre aree principali: la programmazione a scambio di messaggi, con riferimento allo standard MPI, la programmazione su CPU a memoria condivisa, con riferimento allo standard OpenMP, e la programmazione di acceleratori grafici, utilizzando il sistema CUDA.
Con riferimento alle linee guida riportate nel documento: "ACM/IEEE-CS- Computer Science Curricula 2013" (https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf), il corso contribuisce a coprire le seguenti aree e relativi obiettivi:
Parallel and Distributed Computing (PD): Introduzione, Fondamenti di Programmazione Parallela, Decomposizione di problemi, Comunicazione e coordinazione Algoritmi paralleli.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE:
Al termine del corso lo studente avrà acquisito le nozioni fondamentali pertinenti alla programmazione parallela, nelle modalità a scambio di messaggi e con l'uso di direttive di compilazione per sistemi a memoria condivisa; avrà inoltre acquisito la conoscenza degli algoritmi fondamentali per applicazioni di calcolo parallelo, con particolare riferimento agli algoritmi tipici del calcolo scientifico, incluse le metodologie di valutazione delle prestazioni.
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE:
Al termine del corso lo studente avrà acquisito le metodologie della programmazione parallela e gli strumenti necessari alla costruzione di algoritmi ed applicazioni parallele.
AUTONOMIA DI GIUDIZIO:
Al termine del corso lo studente sarà in grado di selezionare ed applicare i metodi della programmazione parallela per risolvere in autonomia problemi di programmazione al fine di ottenere sistemi caratterizzati da prestazioni ottimali.
ABILITÀ COMUNICATIVE:
Al termine del corso lo studente avrà acquisito padronanza della terminologia relativa ai sistemi di calcolo parallelo, e sarà in grado di comunicare efficacemente le scelte progettuali necessarie nella realizzazione pratica di applicazioni
CAPACITÀ DI APPRENDIMENTO:
Al termine del corso lo studente avrà acquisito la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti attinenti la programmazione in ambienti di calcolo parallelo, anche con l'acquisizione di nuovi strumenti.
|
|
Codice
|
8039966 |
|
Lingua
|
ITA |
|
Tipo di attestato
|
Attestato di profitto |
|
Crediti
|
9
|
|
Settore scientifico disciplinare
|
ING-INF/05
|
|
Ore Aula
|
90
|
|
Ore Studio
|
-
|
|
Attività formativa
|
Attività formative affini ed integrative
|
Canale Unico
|
Docente
|
FILIPPONE SALVATORE
(programma)
Prima parte Programmazione parallela a memoria distribuita
Concetti generali di programmazione parallela Il modello di programmazione MPI: - Ambiente, tipi di dato; - Comunicazioni punto-punto: blocking, non-blocking, semantica delle comunicazioni - Comunicazioni collettive: globali, non-blocking, neighbour-collectives, comunicazioni persistenti; - Tipi di dato derivati; - Comunicatori, gruppi, topologie; - Comunicazioni one-sided
Esempi applicativi
Cenni ai modelli di programmazione PGAS: CoArrays, UPC.
Seconda parte: Programmazione parallela a memoria condivisa Il modello di programmazione OpenMP: - Programmazione di thread, modello di esecuzione, modello di coerenza della memoria; - Direttive di compilazione, regioni parallele; - Parallelizzazione di cicli; - Gestione della memoria; - Programmazione di task
Esempi applicativi
Terza parte: CUDA - Acceleratori grafici - Programmazione in CUDA - Esempi applicativi
 Peter Pacheco: Parallel Programming in MPI , Morgan Kaufmann R. CHandra et al: Parallel Programming in OpenMP, Morgan Kaufmann
NVIDIA Co.: CUDA Programming guide
|
|
Date di inizio e termine delle attività didattiche
|
- |
|
Modalità di erogazione
|
Tradizionale
|
|
Modalità di frequenza
|
Non obbligatoria
|
|
Metodi di valutazione
|
Valutazione di un progetto
|
|
|