ALGORITMI PER IL CALCOLO PARALLELO
Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente?
Ecco come fare >>
- English course description
- Anno accademico
- 2022/2023
- Docente
- WALTER BOSCHERI
- Crediti formativi
- 6
- Periodo didattico
- Secondo Semestre
- SSD
- MAT/08
Obiettivi formativi
- L'obbiettivo principale del corso consiste nel fornire allo studente le basi della programmazione in ambito parallelo, sia per architetture a memoria distribuita che condivisa.
Le principali conoscenze acquisite saranno:
- caratteristiche delle moderne architetture per il calcolo parallelo;
- metriche per la valutazione delle prestazioni di codici paralleli, mediante misure del tempo di calcolo (speedup, scaling ed efficienza);
- introduzione al paradigma MPI per architetture a memoria distribuita: comunicazioni punto-punto e collettive, direttive di riduzione e sincronizzazione;
- introduzione ad OpenMP per architetture a memoria condivisa;
- esempi di utilizzo delle principali librerie di calcolo per l'algebra lineare, fattorizzazioni e problemi agli autovalori: BLAS, ATLAS, LAPACK, MKL e loro implementazioni parallele;
- esempi d'uso di profiler per l'analisi delle performance su CPU;
- calcolo scientifico per la risoluzione di equazioni alle derivate parziali
Le principali abilità saranno:
- Analizzare un algoritmo seriale e individuare una corretta metodologia di suddivisione del carico di lavoro per ottenere un buono speedup;
- Analizzare un algoritmo seriale e individuare una metodologia di accesso ai dati che massimizzi gli accessi a memoria contigui ed allineati.
- Analizzare le performance di un codice quando eseguito su una architettura reale. Prerequisiti
- E’ necessario padroneggiare le seguenti conoscenze fornite dal corso di "Calcolo numerico":
- fattorizzazione QR, fattorizzazione LU e suo utilizzo per la risoluzione di sistemi lineari;
- rappresentazione in virgola mobile, precisione di macchina, aritmetica finita.
Prerequisito consigliato è la familiarità con il linguaggio di programmazione FORTRAN.
Il computer portatile è altamente consigliato. Contenuti del corso
- Introduzione (10 ore)
- Introduzione al calcolo parallelo, architettura di una CPU, costo computazionale;
- Introduzione al linguaggio di programmazione FORTRAN;
- misura di prestazioni (speedup, scaling ed efficienza), codice FORTRAN per misurare il tempo di calcolo in seriale;
- Esempio: implementazione del metodo del gradiente coniugato per la soluzione di sistemi lineari;
Utilizzo di MPI (12 ore)
- Introduzione a MPI, script per la compilazione e il lancio di codici paralleli,
comunicazioni punto-punto bloccanti e non bloccanti, definizione di deadlock ed esempio mediante send/receive,
soluzione del deadlock mediante sendreceive, comunicazioni collettive, riduzioni, direttive di sincronizzazione;
- Esempio: implementazione del metodo del gradiente coniugato mediante MPI;
Approfondimenti
- OpenMP (8 ore)
Esempi di parallelizzazione per il calcolo scientifico applicato a equazioni iperboliche alle derivate parziali (18 ore)
- equazione del calore su griglie strutturate
- equazioni per le correnti a superficie libera su griglie strutturate
- parallelizzazione di griglie non strutturate usando la libreria Metis Metodi didattici
- I temi del corso verranno introdotti in aula mediante l'uso di presentazioni ed esempi pratici.
Possibile applicazione dei codici di calcolo su architettura CINECA. Modalità di verifica dell'apprendimento
- Il livello di raggiungimento degli obiettivi formativi indicati in precedenza verrà verificato attraverso una prova d'esame, composta da due parti:
- presentazione di un progetto svolto autonomamente;
- discussione sui contenuti del corso.
Il testo per i possibili progetti d'esame verrà rilasciato durante il corso. Testi di riferimento
- - Dispense del docente.
- Libro di Testo: V. Kumar, A. Grama, A. Gupta, G. Karypis, Introduction to Parallel Computing: design and analysis of Algorithms, Addison-Wesley, 2003
- Testo per approfondimento: D.P. Bertsekas, J. Tsisiklis, Parallel and Distributed Computation: Numerical Methods, Trentine-Hall, 1989