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. Paradigmi di parallelizzazione, parallelizzazione su CPU che su GPU, sistemi a memoria distribuita. Applicazioni Data intensive, Memory Intensive and Compute Intensive. Analisi delle prestazioni nei sistemi HPC.

Curriculum

scheda docente | materiale didattico

Mutuazione: 20410426 IN480 - CALCOLO PARALLELO E DISTRIBUITO in Scienze Computazionali LM-40 R LOMBARDI FLAVIO

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

Mutuazione: 20410426 IN480 - CALCOLO PARALLELO E DISTRIBUITO in Scienze Computazionali LM-40 R LOMBARDI FLAVIO

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