20410426 - IN480 - CALCOLO PARALLELO E DISTRIBUITO

Acquisire le tecniche di programmazione parallela e distribuita, e la conoscenza delle moderne architetture hardware e software per il calcolo scientifico ad alte prestazioni. Introdurre i metodi iterativi distribuiti per la simulazione di problemi numerici. Acquisire la conoscenza dei linguaggi di nuova concezione per la programmazione dinamica nel calcolo scientifico, quali il linguaggio Julia.

Curriculum

scheda docente | materiale didattico

Programma

Tassonomia di Flynn
Architetture parallele a memoria condivisa, a memoria distribuita e GPGPU
Pattern per la programmazione parallela: problemi embarassingly parallel; work farm; partitioning; reduce; stencil
Valutazione delle prestazioni di programmi paralleli: Speedup, legge di Amdahl, strong e weak scalability.
Caratteristiche ed utilizzo programmazione SIMD
Programmazione di architetture a memoria condivisa con OpenMP
Programmazione di architetture a memoria distribuita con MPI
Programmazione GPGPU tramite linguaggi CUDA, OpenCL e SYCL.
Calcolo distribuito su Cloud e cenni ad approcci innovativi per HPC (K8s, OpenACC, Rust)


Testi Adottati

Peter Pacheco, Matthew Malensek, An Introduction to Parallel Programming, 2nd ed., Morgan Kaufmann, 2021, ISBN 9780128046050

CUDA C++ programming guide

Appunti del docente - Slide del corso a cura del docente


Modalità Frequenza

La partecipazione attiva alle lezioni ed esercitazioni è fortemente consigliata,

Modalità Valutazione

La valutazione prevede una prova scritta sugli argomenti del corso (durata 2 ore circa 16 domande aperte) più la implementazione di un progetto software concordato con il docente e della relativa documentazione

scheda docente | materiale didattico

Programma

Tassonomia di Flynn
Architetture parallele a memoria condivisa, a memoria distribuita e GPGPU
Pattern per la programmazione parallela: problemi embarassingly parallel; work farm; partitioning; reduce; stencil
Valutazione delle prestazioni di programmi paralleli: Speedup, legge di Amdahl, strong e weak scalability.
Caratteristiche ed utilizzo programmazione SIMD
Programmazione di architetture a memoria condivisa con OpenMP
Programmazione di architetture a memoria distribuita con MPI
Programmazione GPGPU tramite linguaggi CUDA, OpenCL e SYCL.
Calcolo distribuito su Cloud e cenni ad approcci innovativi per HPC (K8s, OpenACC, Rust)


Testi Adottati

Peter Pacheco, Matthew Malensek, An Introduction to Parallel Programming, 2nd ed., Morgan Kaufmann, 2021, ISBN 9780128046050

CUDA C++ programming guide

Appunti del docente - Slide del corso a cura del docente


Modalità Frequenza

La partecipazione attiva alle lezioni ed esercitazioni è fortemente consigliata,

Modalità Valutazione

La valutazione prevede una prova scritta sugli argomenti del corso (durata 2 ore circa 16 domande aperte) più la implementazione di un progetto software concordato con il docente e della relativa documentazione

scheda docente | materiale didattico

Programma

Tassonomia di Flynn
Architetture parallele a memoria condivisa, a memoria distribuita e GPGPU
Pattern per la programmazione parallela: problemi embarassingly parallel; work farm; partitioning; reduce; stencil
Valutazione delle prestazioni di programmi paralleli: Speedup, legge di Amdahl, strong e weak scalability.
Caratteristiche ed utilizzo programmazione SIMD
Programmazione di architetture a memoria condivisa con OpenMP
Programmazione di architetture a memoria distribuita con MPI
Programmazione GPGPU tramite linguaggi CUDA, OpenCL e SYCL.
Calcolo distribuito su Cloud e cenni ad approcci innovativi per HPC (K8s, OpenACC, Rust)


Testi Adottati

Peter Pacheco, Matthew Malensek, An Introduction to Parallel Programming, 2nd ed., Morgan Kaufmann, 2021, ISBN 9780128046050

CUDA C++ programming guide

Appunti del docente - Slide del corso a cura del docente


Modalità Frequenza

La partecipazione attiva alle lezioni ed esercitazioni è fortemente consigliata,

Modalità Valutazione

La valutazione prevede una prova scritta sugli argomenti del corso (durata 2 ore circa 16 domande aperte) più la implementazione di un progetto software concordato con il docente e della relativa documentazione