Vai al contenuto principale
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:
Ultimo aggiornamento: 23/11/2020 22:18

Location: https://matematicalm.campusnet.unito.it/robots.html
Non cliccare qui!