20810157 - CALCOLO PARALLELO E DISTRIBUITO

Fornire allo studente conoscenze metodologico-operative e competenze progettuali per quanto attiene ai metodi di progettazione di codice per il calcolo parallelo e distribuito. Lo studente che abbia superato il corso dovrà essere in grado di: progettare e sviluppare applicazioni, nonché di partecipare al progetto e allo sviluppo di librerie e sottosistemi per applicazioni generiche
scheda docente | materiale didattico

Programma

Breve introduzione al linguaggio Julia. Introduzione alle architettura parallele, programmazione parallela e distribuita con Julia. Primitive di comunicazione e sincronizzazione. Parallelizzazione basata su direttive, modelli di programmazione parallela. Metriche di prestazione. Operazioni matriciali e sistemi lineari densi. Sistemi lineari sparsi. Algoritmi cache-oblivious. Tecniche di sviluppo collaborativo di progetti, sviluppo e debugging guidati dai test.

Testi Adottati

Trasparenze delle lezioni

Blaise N. Barney, HPC Training Materials, by kind permission of Lawrence Livermore National Laboratory's Computational Training Center

Avik Sengupta, Julia High Performance: Optimizations, distributed computing, multithreading, and GPU programming with Julia 1.0 and beyond, 2nd Edition, Pakt, 2019


Modalità Erogazione

Lezioni in aula, progetti, svolti sulla base di indicazioni fornite dal docente. Nel caso di un prolungamento dell’emergenza sanitaria da COVID-19 saranno recepite tutte le disposizioni che regolino le modalità di svolgimento delle attività didattiche e della valutazione degli studenti. In particolare, ove necessario, si procederà con videolezioni sincrone e disponibili anche in forma registrata, supportate dalle forme di interazione che risulteranno possibili, in presenza o a distanza.

Modalità Valutazione

valutazione progetto , valutazione in itinere