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
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)
CUDA C++ programming guide
Appunti del docente - Slide del corso a cura del docente
Programma
Tassonomia di FlynnArchitetture 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 9780128046050CUDA 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
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)
CUDA C++ programming guide
Appunti del docente - Slide del corso a cura del docente
Programma
Tassonomia di FlynnArchitetture 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 9780128046050CUDA 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
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)
CUDA C++ programming guide
Appunti del docente - Slide del corso a cura del docente
Programma
Tassonomia di FlynnArchitetture 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 9780128046050CUDA 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