Nuova ricerca

Ivan MARRI

Professore Associato
Dipartimento di Scienze e Metodi dell'Ingegneria

Insegnamento: High Performance Computing for Advanced Physical Analysis

Digital Automation Engineering (D.M.270/04) (Offerta formativa 2023)

Obiettivi formativi

Il corso intende fornire allo studente le conoscenze necessarie per comprendere
il funzionamento di architetture HPC (High Performance Computing), nozioni di base di calcolo parallelo e conoscenze preliminari per la gestione di calcoli scientifici su macchine ad alte prestazioni.


Al termine dell’insegnamento lo studente dovrà essere in grado di:

-Sottomettere simulazioni numeriche su piattaforme HPC.
-Risolvere, attraverso le conoscenze acquisite, semplici esercizi di programmazione parallela scegliendo autonomamente le metodiche di analisi dei problemi.
-Sviluppare la capacità di esporre in modo chiaro, rigoroso e conciso i concetti affrontati nel corso.
-Sviluppare la capacità di approfondire in modo autonomo aspetti collaterali agli argomenti proposti durante il corso.

Per un ulteriore approfondimento degli obiettivi formativi, si rimanda alla lettura dei “Risultati di apprendimento attesi”.

Prerequisiti

Conoscenze di base di python e linguaggio di programmazione Fortran

Programma del corso

L’insegnamento si svolge nel primo semestre del secondo anno, per un totale di 54 ore di lezioni teoriche più attività legate alle esercitazioni (per un totale di 6 CFU). I contenuti sotto riportati sono da considerarsi indicativi e potrebbero essere integrati o parzialmente modificati in funzione di situazioni contingenti o alla luce di feedback da parte degli studenti. La suddivisione in CFU è puramente indicativa.

-- PARTE 1 (19 ore 2 CFU)
INTRODUZIONE AL FORTRAN [10 ore]
• Cenni storici
• introduzione ai compilatori
• Sintassi di base
• Input/Output
• Operatori Predefiniti
• Costruttori condizionali ed interattivi
• Procedure, funzioni intrinseche, vettori e matrici, arrays
• Tipi derivati

CALCOLO SCIENTIFICO CON PYTHON [9 ore]
• Introduzione al Python
• Jupyter Lab
• Basic types e strutture dati
• Controllo dei flussi, I/O
• Funzioni e Classi
• Errori ed eccezioni
• Comprensione di elenchi e generatori
• Numpy arrays, array slicing
• Soluzione di problem di algebra lineare (Operazioni matrici-matrici, norma, traccia, calcolo
del determinante, inversion di matrici, autovalori ed autovettori, sistemi di equazioni lineari),
metodi statistici (ordinamento, media, varianza, correlazione, istogrammi, random sampling)
• Trasformazioni discrete di Fourier
• Integrazione numerica, soluzioni di ODEs and PDEs
• Ottimizzazione ed interpolazione

-- PARTE 2 (35 ORE, 4 CFU)
INTRODUZIONE AL CALCOLO PARALLELO [17 ore]
• Introduzione ai sistemi HPC
• Introduzione al paradigma MPI
• MPI point to Point
• Collective MPI
• Jacobi solver: parallelizzazione
• Tipi derivati MPI
• Comunicatori MPI e Topologie Virtuali
• MPI avanzato
• OpenMP: concetti di base


CALCOLO PARALLELO CON PYTHON [4 ore]
MPI con mpi4py
• Comunicatori Point-to-point: send, recv, deadlock, sendrecv, halo exchange, nonblocking communications
• Comunicazioni Collettive

Analisi Fisica Avanzata [14 ore]
• Accenni di dinamica Molecolare
• Analisi delle traiettorie MD: calcolo della funzione di distribuzione radiale
• Spettroscopia computazionale: simulazione di spettri vibrazionali (IR, Raman)

Metodi didattici

La didattica è basata su lezioni frontali svolte tramite l’ausilio di lavagne virtuali. La frequenza non è obbligatoria ma fortemente consigliata. Il corso è erogato in lingua inglese. Tutte le informazioni relative al corso nonché il materiale didattico saranno caricate sulle piattaforme Moodle e/o Teams con cadenza settimanale. Il docente riceve gli studenti su appuntamento richiesto via e-mail.

Testi di riferimento

Dispense del Docente date a cadenza settimanale.
Teacher's handouts given on a weekly basis.

Verifica dell'apprendimento

L'esame si compone della preparazione di un elaborato i cui risultati verranno discussi durante l’esame orale.
Lo scopo della prova è di verificare la capacità dello studente di risolvere semplici problemi legati al calcolo ad alte prestazioni nonché la sua capacità di discutere in modo chiaro le tematiche affrontate durante il corso. L’esame sarà svolto in presenza. La durata dell’esame orale è fissata in circa 45 minuti. Durante la prova lo studente dovrà tenere spento il cellulare e dovrà presentare i risultati dell’elaborato attraverso delle slides. Gli esiti saranno comunicati immediatamente dopo la prova d’esame; la pubblicazione avverrà tramite Esse3. Il voto è espresso in trentesimi e il superamento dell’esame comporta il raggiungimento della soglia dei 18/30.

Risultati attesi

Tramite le lezioni in aula e il materiale didattico fornito attraverso le dispense lo studente acquisirà le conoscenze di base su tematiche relative al calcolo ad alte prestazioni.
In particolare:

-Conoscenza e capacità di comprensione:
Lo studente svilupperà la capacità di comprendere e analizzare problemi legati al calcolo ad alte prestazioni su piattaforme HPC.

-Capacità di applicare conoscenza e comprensione:
Lo studente svilupperà la capacità di risolvere esercizi e problemi relativi al calcolo ad alte prestazioni.

-Autonomia di giudizio:
Lo studente svilupperà la capacità di scegliere autonomamente le metodiche di analisi e soluzione dei problemi relativi alle tematiche affrontate nel corso.

-Abilità comunicative:
Lo studente svilupperà la capacità di esporre in modo chiaro, rigoroso e conciso i concetti affrontati nel corso.

-Capacità di apprendimento:
Lo studente svilupperà la capacità di approfondire in modo autonomo alcuni aspetti collaterali degli argomenti proposti nel corso.