Il corso fornisce una competenza completa e operativa nel calcolo ad alte prestazioni e nella programmazione parallela, dal funzionamento delle architetture di calcolo moderne fino allo sviluppo, all'ottimizzazione, al debugging e al profiling di codice parallelo su sistemi multi-core, multi-nodo e accelerati da GPU.
MODULO A — Architetture moderne, codice seriale e memoria condivisa (40h)
Obiettivi formativi: comprendere come le scelte di codice si traducano in performance sulla microarchitettura; saper portare un kernel seriale a una versione vettorizzata e cache-friendly; saper parallelizzare su nodo singolo con OpenMP gestendo correttamente la memoria condivisa; saper individuare bug di correttezza e colli di bottiglia seriali con strumenti standard.
Contenuti didattici
- Architetture moderne (CPU)
- Ottimizzazione del codice seriale
- Architettura del nodo e NUMA
- Multithreading con OpenMP
- Debugging & Profiling I (seriale)
MODULO B — Memoria distribuita (MPI) e architetture dei cluster di calcolo
Obiettivi formativi: comprendere il modello a memoria distribuita e saper scrivere applicazioni MPI corrette ed efficienti fino al livello intermedio; padroneggiare le tecniche MPI avanzate per pattern di comunicazione complessi e I/O parallelo; saper fare debugging e profiling di applicazioni parallele multi-process
Contenuti didattici
- Architetture dei cluster
- MPI — base
- MPI — intermedio
- MPI — avanzato
- Debugging & Profiling II (parallelo)
- Containerizzazione per HPC
MODULO C — GPU, algoritmi e deployment (40h)
Obiettivi formativi: comprendere l'architettura GPU e saper scrivere e ottimizzare kernel di base sfruttando il memory model; saper gestire scenari multi-GPU e multi-nodo con communication libraries dedicate; saper profilare applicazioni alla scala di produzione e distribuirle in modo riproducibile.
Contenuti didattici
- GPU I
- GPU II (avanzata e distribuita)
- Profiling su larga scala
La fee di iscrizione è di 100€ a persona per ogni modulo, i tre moduli sono pensati per essere fruibili anche separatamente.
La quota di partecipazione non comprende le spese di viaggio e di alloggio, che restano interamente a carico dei partecipanti. Sono invece inclusi nella quota il pranzo e i coffee break previsti durante tutte le giornate di lezione.
I posti disponibili sono 40 e l’ammissione in aula avverrà secondo l’ordine di registrazione. Qualora il numero di iscrizioni superi i posti disponibili, alla chiusura delle registrazioni avranno priorità dottorandi/e e giovani ricercatori/trici, sempre nel rispetto dell’ordine temporale di iscrizione