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
Contenuti didattici
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
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