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

Programma

Architetture parallele inclusi sistemi 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, efficienza, scalabilità
Programmazione di architetture a memoria condivisa con OpenMP
Programmazione di architetture a memoria distribuita con MPI
Programmazione di GPU con CUDA
Cenni a Linguaggi di Programmazione innovativi per HPC (OpenACC, Rust + libraries, SIMD, OpenCL, ...)


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

Bibliografia Di Riferimento

Norm Matloff, Programming on Parallel Machines: GPU, Multicore, Clusters and more,

Modalità Frequenza

La partecipazione attiva alle lezioni ed esercitazioni è fortemente consigliata, per le circa 6 ore di lezione spalmate su due giorni della settimana,

Modalità Valutazione

Scritto con domande aperte e chiuse ed un Progetto da concordare con il Docente

scheda docente | materiale didattico

Programma

Architetture parallele inclusi sistemi 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, efficienza, scalabilità
Programmazione di architetture a memoria condivisa con OpenMP
Programmazione di architetture a memoria distribuita con MPI
Programmazione di GPU con CUDA
Cenni a Linguaggi di Programmazione innovativi per HPC (OpenACC, Rust + libraries, SIMD, OpenCL, ...)


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

Bibliografia Di Riferimento

Norm Matloff, Programming on Parallel Machines: GPU, Multicore, Clusters and more,

Modalità Frequenza

La partecipazione attiva alle lezioni ed esercitazioni è fortemente consigliata, per le circa 6 ore di lezione spalmate su due giorni della settimana,

Modalità Valutazione

Scritto con domande aperte e chiuse ed un Progetto da concordare con il Docente

scheda docente | materiale didattico

Programma

Architetture parallele inclusi sistemi 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, efficienza, scalabilità
Programmazione di architetture a memoria condivisa con OpenMP
Programmazione di architetture a memoria distribuita con MPI
Programmazione di GPU con CUDA
Cenni a Linguaggi di Programmazione innovativi per HPC (OpenACC, Rust + libraries, SIMD, OpenCL, ...)


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

Bibliografia Di Riferimento

Norm Matloff, Programming on Parallel Machines: GPU, Multicore, Clusters and more,

Modalità Frequenza

La partecipazione attiva alle lezioni ed esercitazioni è fortemente consigliata, per le circa 6 ore di lezione spalmate su due giorni della settimana,

Modalità Valutazione

Scritto con domande aperte e chiuse ed un Progetto da concordare con il Docente