Architetture avanzate (2017/2018)

Codice insegnamento
4S02910
Docente
Nicola Bombieri
Coordinatore
Nicola Bombieri
crediti
6
Altri corsi di studio in cui è offerto
Settore disciplinare
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Lingua di erogazione
Italiano
Periodo
II sem. dal 1-mar-2018 al 15-giu-2018.

Orario lezioni

Vai all'orario delle lezioni

Obiettivi formativi

Il corso mira a fornire conoscenze teoriche e pratiche per la programmazione e l'analisi di architetture di calcolo avanzate con particolare enfasi alle piattaforme multiprocessore e GPU.
Al termine del corso lo studente dovrà dimostrare di avere maturato capacità di applicare le conoscenze necessarie per: individuare tecniche di parallelizzazione di applicazioni Software, anche in un contesto di ricerca, attraverso l'analisi dell'efficienza delle applicazioni considerando vincoli funzionali e non funzionali di progettazione (correttezza, performance, consumo energetico); analizzare performance e condurre profiling del codice, con individuazione zone critiche e relativa ottimizzazione considerando caratteristiche architetturali della piattaforma; capacità di confrontare pattern di parallelismo diversi e scegliere tra questi il più adeguato a seconda del contesto d'uso. In fase di definizione della struttura del codice ottimizzato, capacità di fare le scelte progettuali più appropriate a seconda del contesto e piattaforma in cui l'applicazione parallela verrà usata. Lo studente sarà, inoltre, in grado di relazionarsi con gli interlocutori nell'ambiente lavorativo o di ricerca. Infine, lo studente dovrà dimostrare capacità di poter proseguire gli studi in modo autonomo nell’ambito dei linguaggi di programmazione paralleli e dello sviluppo di software per piattaforme embedded e/o parallele.

Programma

Teoria (32h):
Intro High-performance computing (HPC)
Parallel architectures
Parallel programming models
HPC and Symmetric Multi-Processors (SMP): OpenMP
HPC and Message Passing Interface (MPI): OpenMPI
Graphic Processing Units (GPUs): overview, parallel programming model, threads, memory model.
Performance measurement
GPU performance considerations
GPU data transfers and streams.
Parallel graph algorithms for GPUs: BFS and SSSP
OpenCL and OpenACC
Modeling for qualitative simulation in Systems Biology targeting HPC

Laboratorio (24h):
OpenMP
OpenMPI
CUDA
OpenCL
R parallel pack
Qualitative modelling lab.

Testi di riferimento
Autore Titolo Casa editrice Anno ISBN Note
John L. Hennessy, David A. Patterson Computer Architecture - A Quantitative Approach (Edizione 5) Morgan Kaufmann 2011 012383872X
David B. Kirk, Wen-mei W. Hwu Programming Massively Parallel Processors - A Hands-on Approach (Edizione 3) Morgan Kaufmann 2017 978-0-12-811986-0

Modalità d'esame

L’esame consiste nello sviluppo di un progetto concordato con il docente previo richiesta via email e appuntamento per l’elaborazione delle specifiche (il progetto ha validità tutto l’anno accademico). I progetti hanno diversi livelli di difficoltà. Ad ogni difficoltà corrisponde un valore massimo di valutazione. Gli studenti sosteranno un colloquio per commentare e approfondire la prova sostenuta.

I frequentanti al corso potranno esporre alla classe le tematiche del loro progetto, il contesto di ricerca in cui il progetto è collocato, e lo stato di avanzamento dello stesso.

Il voto per il progetto (voto_progetto) è espresso in trentesimi.

Il voto finale è calcolato come min(31, (voto_progetto + Bias)).
Bias è espresso nell'intervallo[-4,+4] e riflette la maturazione e autonomia scientifica acquisita durante lo sviluppo del progetto, nell’esposizione e nell’interpretazione della letteratura scientifica e del contesto scientifico del progetto.

Opinione studenti frequentanti - 2017/2018