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
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, ...)
CUDA C++ programming guide
Appunti del docente - Slide del corso a cura del docente
Programma
Architetture parallele inclusi sistemi a memoria condivisa, a memoria distribuita e GPGPUPattern 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 9780128046050CUDA 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
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, ...)
CUDA C++ programming guide
Appunti del docente - Slide del corso a cura del docente
Programma
Architetture parallele inclusi sistemi a memoria condivisa, a memoria distribuita e GPGPUPattern 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 9780128046050CUDA 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
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, ...)
CUDA C++ programming guide
Appunti del docente - Slide del corso a cura del docente
Programma
Architetture parallele inclusi sistemi a memoria condivisa, a memoria distribuita e GPGPUPattern 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 9780128046050CUDA 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