Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2018/2019
Tipologia di insegnamento: 
Affine/Integrativa
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Laurea triennale (DM 270) in INFORMATICA
Settore disciplinare: 
ANALISI NUMERICA (MAT/08)
Lingua: 
Italiano
Crediti: 
6
Anno di corso: 
3
Docenti: 
Dott.ssa MARCELLINO Livia
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
48

Obiettivi

Il corso introduce all’uso di metodi e strumenti per lo sviluppo di software parallelo.

Prerequisiti

conoscenze trasmesse dai corsi di Matematica I, Programmazione I, Sistemi Operativi.

Contenuti

Introduzione al calcolo ad alte prestazioni ed evoluzione dei supercalcolatori (2ore).
Tipi di parallelismo: temporale, spaziale e asincrono (2ore). Classificazione di Flynn (3ore).
Calcolatori MIMD a memoria condivisa (SM) e a memoria distribuita (DM) (2ore).
Primo e Secondo tipo di parallelismo on chip (2ore).
Cluster e architetture multicore (2ore).
I differenti concetti di calcolo parallelo e di calcolo distribuito: il cloud computing (1ora) -
Speed-up, overhead ed efficienza, legge di Ware-Amdahl,
overhead di comunicazione, speedup ed efficienza scalata,
isoefficienza, scalabilità (5ore).
Somma in parallelo: I, II e III strategia
(in ambiente MIMD-SM e in ambiente MIMD-DM) (4ore).
Prodotto Matrice per vettore in parallelo: I, II e III strategia
(in ambiente MIMD SM e in ambiente MIMD DM) (4ore).
Libreria MPI: caratteristiche e funzioni di base, principali routine
per la gestione dei processi e loro comunicazione, topologie virtuali: griglie di processori (5ore).
Libreria OpenMp: processi e threads, modello d’esecuzione parallela fork-join, direttive al compilatore, costrutti e clausole,
runtime library routines e variabili d’ambiente (6ore).
Scrittura, compilazione ed esecuzione di programmi che utilizzano MPI e OpenMp
(6ore).
Il servizio cloud computing: AWS. Accesso con Account e Configurazione, gestione delle istanze (4ore)

Metodi didattici

Per l’attività di laboratorio, il corso prevede l’impiego del linguaggio di programmazione C/C++ e un’introduzione alle librerie di calcolo parallelo standard (MPI e OpenMP), da utilizzare per lo sviluppo di software parallelo nei differenti ambienti ad alte prestazioni, quali cluster di multiprocessori e/o multicore.
Conoscenza e capacità di comprensione: lo studente deve dimostrare di conoscere i fondamenti del calcolo parallelo, con particolare riguardo alle diverse forme di parallelismo hardware e software e alle strategie di parallelismo per alcuni nuclei computazionali di base della programmazione.
Capacità di applicare conoscenza e comprensione: lo studente deve dimostrare di saper impiegare le strategie studiate e le librerie standard disponibili per sviluppare algoritmi in ambiente ad alte prestazioni, sfruttando le conoscenze relative ai parametri di valutazione del software parallelo e al tipo di hardware disponibile.
Autonomia di giudizio: lo studente deve essere in grado di sapere valutare in maniera autonoma i risultati di un algoritmo parallelo mediante l’analisi di speedup ed efficienza del software.
Abilità comunicative: lo studente deve essere in grado di illustrare un algoritmo parallelo e di documentare la sua implementazione in ambiente ad alte prestazione.
Capacità di apprendimento: lo studente deve essere in grado di aggiornarsi e approfondire in modo autonomo argomenti e applicazioni specifiche di calcolo parallelo, anche accedendo a banche dati, repository on-line di software parallelo ed altre modalità messe a disposizione dalla rete.

Verifica dell'apprendimento

L’obiettivo della procedura di verifica consiste nel quantificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati.
La procedura di verifica è indicata precisamente nella piattaforma di e-learning del Dipartimento di Scienze e Tecnologie. In sintesi, l’esame consiste in una prova di laboratorio che verifica la capacità di implementare un semplice programma in ambiente di calcolo ad alte prestazioni (30% del voto), una prova scritta per la valutazione della conoscenza delle strategie parallele relative ai nuclei computazionali di base dell’algebra lineare (40% del voto), una prova orale per esaminare la capacità di analisi di un software parallelo in termini di efficienza (30% del voto).

Testi

A. Grama, G. Karypis, V. Kumar, A. Gupta: “Introduction to Parallel Computing (2nd Edition)”, Ed. Addison Wesley, 2003.
Tutte le lezioni sono disponibili (in formato pdf) sulla piattaforma di e-learning del Dipartimento di Scienze e Tecnologie, insieme con esercizi per autovalutazione, manuali d’uso delle librerie, prove d’esame, articoli recenti sugli argomenti più innovativi.

Altre informazioni