Obiettivi formativi
Il corso introduce i principi ed i concetti fondamentali su cui si basano i sistemi paralleli. In particolare, vengono analizzate le architetture moderne, le caratteristiche degli algoritmi paralleli e le metodologie di programmazione per le architetture piu' diffuse (cluster processori, GPU)
Prerequisiti
Architettura degli Elaboratori, Sistemi Operativi
Contenuti dell'insegnamento
Studio e analisi delle prestazioni dei sistemi per il calcolo HPC.
Programmazione parallela a memoria condivisa con openMP, distribuita con MPI e programmazione delle GPU con CUDA.
Programma esteso
- hardware: architettura degli elaboratori paralleli, performance degli elaboratori e dei componenti principali: CPU, GPU, storage, high speed network (infiniband e omnipath), top500; use case: il cluster HPC UniPR
- software: progettazione di programmi paralleli, efficienza e speedup, legge di Amdahl, parallelismo automatico, guidato e manuale.
- parallelismo a memoria condivisa con openMP
- parallelismo a memoria distribuita con MPI
- programmazione di architetture GPU con CUDA
Laboratorio: prove sul cluster HPC UniPR, gestore code, ambiente software del cluster, profiling, sviluppo del codice parallelo.
Bibliografia
Il materiale didattico sara' fornito su Elly (slide delle lezioni e riferimenti bibliografici)
Metodi didattici
Proporre un percorso che, partendo dalle architetture hardware piu' diffuse, propone diverse metodologie di programmazione adatte a tali sistemi.
Il corso prevede, oltre a lezioni teoriche, una serie di esercitazioni pratiche svolte sul cluster HPC di ateneo.
Con riferimento agli Indicatori di Dublino:
Conoscenza e capacità di comprensione
Il corso introduce i primi concetti relativi al calcolo paralello e ad alte prestazioni. Particolare enfasi è data alla comprensione delle dei modelli di calcolo ed algoritmi adatti. I riferimenti per gli approfondimenti sono in italiano e viene utilizzata durante le lezioni la terminologia in lingua inglese come avviamento alla consultazione di letteratura scientifica internazionale.
Capacità di applicare conoscenza e comprensione
Le conoscenze teoriche presentate vengono sempre applicate alla risoluzione di problemi specifici. Le esercitazioni che affiancano il corso sono incentrate sulla risoluzione di esercizi e problemi, con particolare riferimento all’utilizzo dei sistemi paralleli. Spesso i metodi risolutivi vengono presentati sotto forma algoritmica, sviluppando negli studenti la capacità di strutturare procedure utili in numerose parti dell'informatica e non solo nell'ambito HPC.
Autonomia di giudizio
Gli esercizi, che vengono proposti relativamente alla parte teorica svolta a lezione, possono venire risolti individualmente o in gruppo. Il confronto con i compagni di corso, nel lavoro a casa o durante gli svolgimenti in aula, favorisce lo sviluppo di capacità specifiche per poter a chiarire ai compagni o ai docenti le proprie argomentazioni. Spesso gli esercizi proposti possono venire risolti in modi molto diversi e l'ascolto delle soluzioni proposte da altri permette di sviluppare la capacità di individuare strutture comuni, al di là delle apparenti differenze superficiali.
Abilità comunicative
Le numerose discussioni sui diversi metodi per risolvere i problemi proposti consentono di migliorare le capacità di comunicazione. Vengono inoltre abitualmente utilizzate durante le spiegazioni (ed esplicitamente evidenziate in classe) alcune modalità di comunicazione specifiche della tecnologia informatica.
Capacità di apprendimento
Lo studio delle origini delle soluzioni tecnologiche e la loro introduzione motivata da considerazioni quantitative contribuisce a realizzare negli studenti la capacità di apprendere in modo profondo e non soltanto superficiale e ripetitivo. Le conoscenze così acquisite non sono mai rigide e definitive, ma sono perfettamente adattabili ad ogni evoluzione e cambiamento di prospettiva e di contesto.
Modalità verifica apprendimento
Risultati dell'apprendimento e modalità di verifica
Saper comprendere e utilizzare in modo appropriato le tecniche relative alla programmazione di un sistema parallelo. Saper progettare un algoritmo parallelo ed implementarlo su un cluster/acceleratore hardware. Conoscere l'architettura di base delle configurazioni moderne di cluster HPC.
Modalità di verifica/esame
L'esame consiste in un colloquio orale a cui si accede solo previa consegna della prove di laboratorio assegnate durante il corso. Durante l'orale si discutono le consegne di laboratorio, nonche' argomenti di teoria trattati a lezione. In assenza della consegna delle prove di laboratorio, sara' richiesta una prova pratica sugli argomenti di laboratorio.
Non sono previste prove intermedie
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
- - -