- Oggetto:
- Oggetto:
Sistemi di Calcolo Paralleli e Distribuiti
- Oggetto:
Parallel and Distributed Computer Systems
- Oggetto:
Anno accademico 2020/2021
- Codice dell'attività didattica
- MFN0795 (coorte 2019) - MAT0233 (coorte 2020)
- Corso di studi
- Laurea Magistrale in Matematica (D.M. 270)
- Anno
- 1° anno 2° anno
- Periodo didattico
- Secondo semestre
- Tipologia
- D.M. 270 TAF C - Affine o integrativo
- Crediti/Valenza
- 6
- SSD dell'attività didattica
- INF/01 - informatica
- Modalità di erogazione
- Tradizionale
- Lingua di insegnamento
- Italiano
- Modalità di frequenza
- Facoltativa
- Tipologia d'esame
- Data dell'appello da concordare con il docente (tramite mail o telefonicamente)
- Prerequisiti
- Programmazione imperativa, conoscenza dei linguaggi C/C++ (anche elementare), algoritmi.
Uso dii sistemi UNIX mediante shell, editor, compilazione di programmi (C/C++, Java).
Conoscenza della lingua inglese (almeno sufficiente per capire testi e manuali in inglese). - Oggetto:
Sommario insegnamento
- Oggetto:
Obiettivi formativi
Il corso introduce i principali modelli e strumenti per la programmazione parallela e distribuita, con maggiore enfasi sulla programmazione parallela. Obiettivo primario è fornire metodi e strumenti per dominare la complessità della progettazione di applicazioni parallele basate sui modelli di programmazione a memoria condivisa, a scambio di messaggi e SIMD.
Metodologicamente, il corso prima introduce le architetture ed i concetti fondamentali per la programmazione parallela e distribuita (attività, sincronizzazione, comunicazione), che poi vengono applicati ed esemplificati su esempi di interesse per per i curriculum dello studente (es. calcolo scientifico).
- Oggetto:
Risultati dell'apprendimento attesi
- Conoscenza dei paradigmi di programmazione parallela.
- Competenze di programmazione parallela con i tradizionali modelli di programmazione a basso livello di astrazione: message passing e shared memory.
- Conoscenza degli strumenti di studio delle prestazioni di programmi paralleli.
- Competenze di architetture dei sistemi paralleli multi-core e distribuiti (livello elementare).
- Competenze di programmazione GPGPU (livello elementare).
- Competenze di performance tuning (livello elementare).
- Oggetto:
Modalità di insegnamento
Corso tradizionale con esercitazioni tenute dal docente con utilizzo alternato di lavagna tradizionale e proiezione di slide. Registro delle lezioni sul sito moodle del corso (inclusivo del materiale didattico ed esercizi proposti).
- Oggetto:
Modalità di verifica dell'apprendimento
L'esame è costituito da un progetto e una prova orale, che verte su tutto il programma svolto.
Il progetto consiste nella progettazione, l'implementazione e l'analisi di un software parallelo medianti gli stumenti presentanti nel corso. La scelta del software da realizzare è proposta dallo studente e concordata con il docente. Il progetto può essere realizzato in gruppo o individualmente e deve essere accompagnato da una relazione scritta. La relazione deve riportare le scelte progettuali, le sperimentazione e l'analisi dei risultati ottenuti. L'ammissione alla prova orale è condizionata al conseguimento di un punteggio di almeno 18/30.
La prova orale - sempre induviduale - consiste in un colloquio sugli argomenti svolti durante il corso e prevede, in particolare:
- l'eventuale discussione del progetto e della relazione - l'eventuale svolgimento di esercizi; - l'esposizione di argomenti e risultati trattati nel corso, incluse alcune dimostrazioni.
Entrambe le prove devono essere superate nella stessa sessione d'esame.
- Oggetto:
Programma
1) Introduzione alle architetture parallele e distribuite (8 ore)
- architeture a memoria condivisa: SMP, multi-core (4 ore)
- distribuita: MPP, cluster, grid (4 ore)
2) Paradigmi di programmazione (18 ore)
- a basso livello di astrazione: scambio di messaggi, memoria condivisa (8 ore)
- esempi di parallelizzazione di problemi classici (8 ore)
- ad alto livello di astrazione (cenni): componenti, servizi, workflow, skeleton (2 ore)
3) Esempi di uso ed esercitazioni (22 ore)
- Programmazione con thread_POSIX e MPI, esercizi su casi di studio (12 ore)
- Programmazione SIMT di GPGPU (10 ore)
Testi consigliati e bibliografia
- Oggetto:
- Barry Wilkinson, Michael Allen Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers Prentice Hall; 2 edition ISBN-10: 0131405632
- Marco Danelutto DISTRIBUTED SYSTEMS: PARADIGMS AND MODELS, 2011 (Dispensa)
- Articoli scientifici e siti web di approfondimento saranno forniti durante il corso mediante la piattaforma Moodle.
- Oggetto:
Note
Mutua da MFN0795-Sistemi di calcolo paralleli e distribuiti del CdL Magistrale in Informatica: link alla pagina web
- Oggetto: