ccp:lezioni0708
Questa è una vecchia versione del documento!
CCP 07-08: elenco delle lezioni
La struttura del corso e' abbastanza naturalmente suddivisa in piu' moduli, ma i rimandi ed i collegamenti tra di essi sono essenziali.
MPI : Message Passing Interface
- 18/02 Panorama del corso.
Panoramica del corso, obiettivi, tecnologie principali (MPI, ASSIST).
Forme di parallelismo e implementazione nei diversi modelli/linguaggi di programmazione parallela. Esempi di problemi che verranno esaminati del corso: algoritmi di Data Mining, simulazione computazionale, ricerca combinatoria ed ottimizzazione, algoritmi in memoria esterna. Modalità di superamento dell'esame. Programmazione parallela strutturata e non strutturata, cenni a vari modelli di programmazione. MPI: modello a scambio di messagi, motivazioni dello sviluppo, descrizione ad alto livello dello standard e del modello di programmazione SPMD. - 21/02 MPI: Introduzione, concetti essenziali e comunicazione punto a punto.
MPMD (multiple program multiple data) e SPMD in MPI. Master slave e data parallel come casi particolari di programmi SPMD. Utilizzo strutturato di MPI e realizzazione di librerie parallele. Concetto di comunicatore, esempi di primitive punto a punto di MPI: send e receive sincrona e asincrona, receive asimmetrica. Standard di riferimento: MPI 1.1 (cap.3) con integrazione MPI 2 (cap.3).
Caratteristiche di ordinamento relativo, (non) fairness e uso delle risorse delle primitive MPI. Alcuni concetti base di MPI:- tipi di dato (tipi base, definiti dall'utente, tipi opachi e handle)
- comunicatori (rank, inter/intra-comunicatori, gruppi)
- primitive punto a punto (concetti: envelope, completamento locale e globale, primitive bloccanti e non bloccanti, modalità della send)
- tipi base delle send (cenni): standard, sincrona, ready, buffered
- 26/02 MPI: oggetti opachi, MPI Datatypes e loro costruttori
Tipi di dato generali, concetto di datatype (sequenza di tipi base e displacement) e typemap associata. Supporto ad MPI multi-linguaggio e multi architettura: la definizione a run-time dei tipi di dato (validità locale) come meccanismo di integrazione tra il programma nel linguaggio ospite (compilato) e la libreria di comunicazione (collegata). Rappresentazione interna alla libreria MPI, e come tipi opachi; uso dei costruttori forniti da MPI:MPI_TYPE_COMMIT
eMPI_TYPE_FREE
.MPI_TYPE_
(contiguous, vector, hvector, indexed, hindexed, struct). Concetti di size ed extent. Modificatori di extent (_LB
ed_UB
). Matrici a blocchi, triangolari, diagonali, uso di datatype per realizzare stencil e riorganizzazione di dati associata alla comunicazione. - 28/02 MPI: comunicatori e gruppi
Differenza tra comunicatori e gruppi, concetto di attributo di un gruppo; primitive di creazione dei gruppi (operazioni booleane, aggiunta), conversione tra gruppi e comunicatori, creazione di comunicatori. Primitive di split e merge degli intra-comunicatori. Inter-comunicatori: creazione, semantica relativa al gruppo locale delle primitive sui comunicatori (MPI_COMM_SIZE
,MPI_COMM_RANK
) e primitive dedicate. Operazioni collettive: significato, semantica non sincronizzante, ordinamento dei messaggi. Barrier, broadcast, gather, scatter, gatherv, scatterv, alltoall. - 3/03 MPI operazioni collettive e operatori MPI
Primitive collettive Reduce, ReduceAll. Operatori MPI predefiniti, operatori utente, loro definizione ed applicazione, polimorfismo e meccanismi per la gestione dei datatype. Operazione di scan (parallel prefix). Varianti della semantica delle comunicazione: approfondimento su send sincrona e buffered. Ready-send ed esempio di utilizzo: emettitore di un farm. Operazioni di comunicazione incomplete (receive e varianti della send); meccanismo delleMPI_request
. Controllo delle comunicazioni in sospeso e primitiveWAIT
eTEST
. Varianti multipleWAIT_ANY
,TEST_ANY
,WAIT_ALL
,TEST_ALL
. PrimitiveCANCEL
eMPI_FREE_REQUEST
. Introduzione al controllo del nondeterminismo ed alle primitiveMPI_WAIT_SOME
edMPI_TEST_SOME
. - 6/03 MPI - primitive incomplete e persistenti e controllo del nondeterminismo
MPI_TEST_SOME
,MPI_WAIT_ALL
. Operazioni persistenti, semantica,MPI_START
eMPI_STARTALL
. MPI_request attive e non attive relazione con le varianti diMPI_WAIT
edMPI_TEST
, e con laMPI_CANCEL
. Implementazione di meccanismi di comunicazione a canali tramite MPI, differenze nella semantica. Esempi con il linguaggio LC: implementazione del canale, delle primitive sincrone ed asincrone (via buffered send e processo buffer), del comando alternativo (variante con send incomplete e permanenti,MPI_TEST_SOME
).
ccp/lezioni0708.1204838766.txt.gz · Ultima modifica: 06/03/2008 alle 21:26 (17 anni fa) da Massimo Coppola