High-Performance e Parallel Computing per l’Astrofisica

Abstract

Il corso, organizzato dall’Istituto nazionale di Astrofisica in collaborazione con il Centro Nazionale ICSC, si svolgerà dal 12 ottobre 2026 al 9 aprile 2027 presso l’Università dell’Insubria, Chiostro di Sant’Abbondio in Via Sant’Abbondio 12, Como (Moduli A e B) e l’Area tecnologia CNR di Bologna in Via Gobetti 101 (Modulo C).

Dettagli del corso

Pensato per:

  • Studenti undergraduate e graduate che vogliono acquisire competenze di calcolo parallelo non coperte dai curricula standard;
  • Dottorandi e post-doc in fase iniziale di carriera nelle scienze computazionali (fisica, astrofisica, scienza dei materiali, ingegneria, life sciences, data science), che hanno bisogno di portare i propri codici su sistemi HPC;
  • Professionisti già affermati (ricercatori, ingegneri, Research Software Engineer) che vogliono approfondire o aggiornare le proprie competenze in HPC e programmazione parallela.

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.

Moduli Didattici e Programma

MODULO A — Architetture moderne, codice seriale e memoria condivisa (dal 19 al 23 ottobre – 40h)

Contenuti didattici

  • Architetture moderne (CPU): gerarchia di memoria e cache, branching e branch prediction, instruction-level parallelism — esecuzione out-of-order, super-scalarità, pipelining.
  • Ottimizzazione del codice seriale: scrittura di codice efficiente su CPU moderne; vettorizzazione/SIMD (report del compilatore, dipendenze nei loop, gather/scatter, masking, allineamento); località dei dati e ottimizzazione della cache.
  • Architettura del nodo e NUMA: organizzazione del singolo nodo, effetti NUMA su accesso e allocazione della memoria.
  • Multithreading con OpenMP: dalle basi (parallel regions, work-sharing, scheduling) al task parallelism; OpenMP memory model e sincronizzazione tra thread (barriere, critical/atomic, flush).
  • Debugging & Profiling I (seriale): flag sanitizer di gcc, gdb, profiling basato su PMU (perf, PAPI), valgrind.

MODULO B – Memoria distribuita (MPI) e architetture dei cluster di calcolo (dal 30 novembre al 4 dicembre – 40h)

Contenuti didattici

  • Architetture dei cluster: interconnessioni ad alte prestazioni (InfiniBand, Omni-Path, Ethernet HPC), topologie di rete (fat-tree, dragonfly, torus), modello a memoria distribuita e gerarchia nodo/rack/cluster con implicazioni sulla località delle comunicazioni.
  • MPI – base: modello a processi e comunicatori; comunicazioni point-to-point bloccanti; comunicazioni collettive (broadcast, scatter/gather, reduce); comunicazioni non-blocking; derived datatypes.
  • MPI – intermedio: gestione avanzata di comunicatori e gruppi; sovrapposizione calcolo-comunicazione con pattern non bloccanti in casi reali; topologie virtuali (cartesiane e a grafo) e mapping dei processi.
  • MPI – avanzato: comunicazioni collettive non bloccanti e persistenti; one-sided communication (RMA, put/get) e relativi modelli di sincronizzazione; MPI-IO e I/O parallelo su file system distribuiti; pattern di comunicazione complessi per applicazioni a larga scala; cenni al modello ibrido MPI+OpenMP.
  • Debugging & Profiling II (parallelo): gdb con processi MPI e thread (the hard way); strumentazione e tracing con lo stack Score-P (ed Extrae); analisi di scalabilità e individuazione dei colli di bottiglia di comunicazione.
  • Containerizzazione per HPC: uso di container con Apptainer/Singularity; esecuzione di applicazioni MPI e GPU-aware all’interno dei container; riproducibilità, portabilità e preservazione del codice e dell’esperimento.

MODULO C – GPU, algoritmi e deployment (dal 5 al 9 aprile 2027 – 40h)

Contenuti didattici

  • GPU I: architettura GPU e confronto con la CPU (lato HW e SW); modello di programmazione; CUDA di base; offloading direttivo (OpenMP/OpenACC); memory model – coalescing, shared memory, latency hiding.
  • GPU II (avanzata e distribuita): esecuzione asincrona e programmazione multi-stream; programmazione multi-GPU; HIP e performance portability; introduzione alle GPU AMD e differenze con NVIDIA; nuove architetture (riduzione FP32/FP64, crescita FP16/FP8, mixed-precision); memoria distribuita su GPU – GPU-aware MPI, NCCL/RCCL, NVSHMEM; approccio ibrido MPI+GPU su cluster multi-nodo.
  • Profiling su larga scala: NVIDIA Nsight family (Systems e Compute), compute-sanitizer; profiling di applicazioni massicciamente parallele e analisi delle prestazioni alla scala di produzione.

Competenze in uscita

MODULO A

Il partecipante saprà analizzare e ottimizzare codice seriale guidato da misure, e sa scrivere codice OpenMP corretto ed efficiente su architetture NUMA.

 

MODULO B

Il partecipante saprà parallelizzare un’applicazione su più nodi con MPI e sa progettare e ottimizzare applicazioni parallele complete su sistemi HPC eterogenei e su larga scala, scegliendo pattern algoritmici e di comunicazione adeguati, e sa renderne riproducibile l’esecuzione. Inoltre sa profilare e debuggare i propri codici su piattaforme parallele.

 

MODULO C

Il partecipante saprà scrivere e ottimizzare kernel di base e  portarli  su GPU ottimizzandone gli accessi in memoria, misurandone le prestazioni con strumenti di profiling avanzato. Sa utilizzare cluster multi nodo e multi GPU programmando i propri codici in modo da utilizzare un approccio misto MPI+GPU

Presequisiti

Prerequisiti generali (tutti i moduli)

  • Familiarità con l’ambiente Linux e l’uso della riga di comando (shell, editor, compilazione, gestione dei file).
  • Familiarità con il linguaggio C/C++ (compilazione, puntatori, gestione della memoria, strutture dati di base).
  • È utile, ma non indispensabile, una conoscenza di base di analisi numerica e algebra lineare.

Prerequisiti per-modulo (per chi si iscrive ai singoli moduli)

  • Modulo A: solo i prerequisiti generali.
  • Modulo B: contenuti del Modulo A o competenze equivalenti (paradigma a memoria condivisa, nozioni di architettura del nodo).
  • Modulo C: contenuti dei Moduli A e B o competenze equivalenti (MPI di base/intermedio e programmazione GPU di base).

Profili docenti

Il corso è tenuto da un team di docenti con esperienza diretta di ricerca e sviluppo in ambito HPC e calcolo scientifico, attivi nello sviluppo e nell’ottimizzazione di codici di simulazione su sistemi di classe pre-exascale ed exascale.

  • Valentina Cesare — Tecnologo presso INAF Catania, Expertise: GPU
  • David Goz — Ricercatore presso INAF Trieste, Expertise: OpenMP/MPI/GPU, memory model, profiling
  • Giovanni Lacopo — Ricercatore Tecnologo presso INAF Trieste, Expertise: MPI, GPU AMD, nuove architetture, comunicazione distribuita su GPU
  • Antonio Ragagnin — Ricercatore presso INAF Trieste, Expertise: OpenMP/MPI/GPU/algoritmi
  • Giuliano TaffoniDevelopement Scientist presso INAF Trieste, Expertise: OpenMP, GPU offloading, containerizzazione
  • Luca Tornatore — Astrofisico ed esperto di HPC presso INAF (Trieste); Expertise: architetture, MPI, profiling, algoritmi

Modalità didattiche

Formazione in presenza, con forte componente pratica su risorse HPC reali. Ogni giornata alterna lezione frontale e hands-on (4+4 ore).

Cerificazione

Al termine di ciascun modulo viene rilasciato un attestato di frequenza del singolo modulo.

Registrazione

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

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.

 

Iscriviti

Collabora con ICSC

Hai un progetto, una competenza o una visione che può contribuire alla trasformazione digitale del Paese?

Siamo sempre alla ricerca di nuovi partner per ampliare il nostro impatto.

institutional-logos