Docente
Beatrice Palano |
Programma del corso
Algoritmi paralleli e distribuiti, motivazioni
Architetture parallele e distribuite vs. architettura von Neumann
Risorse computazionali nei due contesti
Algoritmi e architetture parallele
Algoritmi e architetture distribuite
- Problematiche nel disegno di algoritmi paralleli: sintesi, universalità, valutazione
- Architetture parallele a memoria condivisa e distribuita; la comunicazione nei due contesti
- Architetture a memoria condivisa, Il modello PRAM (Parallel RAM), struttura
- PRAM come architettura SIMD vs. architetture MIMD
- Modelli di PRAM: EREW, CREW, CRCW (common, priority, ... )
- Risorse di calcolo: complessità in numero di processori e tempo
- Confronto con algoritmi sequenziali: speed-up ed efficienza
- Soluzione parallela efficiente su PRAM di alcuni problemi fondamentali
- Calcolo di operazioni binarie associative, il problema SOMMATORIA, struttura ed analisi di un algoritmo parallelo
- Algoritmi paralleli efficienti per: algebra lineare, teoria dei grafi, ottimizzazione,...
- Calcolo di operazioni binarie associative prefisse, il problema SOMME PREFISSE
- Struttura ed analisi dell'algoritmo di Kogge-Stone (pointer doubling)
- Valutazione parallela efficiente di polinomi. Algoritmi di ricerca paralleli
- Il problema dell'ORDINAMENTO (ranking), soluzioni sequenziali efficienti
- Algoritmi di ordinamento paralleli efficienti. L'ordinamento bitonico di Batcher, struttura e analisi dell'algoritmo
- Tecnica del circuito euleriano nel progetto di algoritmi paralleli
- Architetture parallele a memoria distribuita, rete di interconnessione e parametri di valutazione: grado, diametro e ampiezza di bisezione
- Reti di ordinamento e il principio 0-1 (Knuth)
- Array lineari di processori, struttura, funzionalità e parametri di rete
- Soluzione parallela dei problemi di ORDINAMENTO, calcolo del massimo e SHUFFLE
- Gli algoritmi di ordinamento ODD-EVEN e MERGE-SPLIT, struttura ed analisi
- Mesh di processori, tipologie, struttura, funzionalità e parametri di rete
- Calcolo del massimo su mesh
- L'algoritmo di ordinamento LS3, sruttura ed analisi
- Modellazione di un'architettura distribuita
- Entità e canali di comunicazione
- Risorse computazionali, tempo e complessità di messaggi
- Struttura ed analisi di soluzioni distribuite per i problemi fondamentali
- BROADCASTING, lower bound per soluzioni distribuite
- L'algoritmo di flooding
- WAKE-UP, l'algoritmo di wflooding
- ATTRAVERSAMENTO, l'algoritmo depth-first
- SPANNING TREE, l'algoritmo shout e depth-first
- ELECTION, risultati di impossibilità, elezione per minimo in un anello
- ROUTING, algoritmi di gossiping, costruzione iterativa della tabella di routing
Registro del corso
(contenuti del corso lezione per lezione)
- Presentazione del corso. Sito del corso, materiali e risorse bibliografiche, modalità d'esame. Chiacchiere introduttive: differenze sostanziali tra algoritmi sequenziali, paralleli e distribuiti. Motivazioni allo studio degli algoritmi paralleli e distribuiti. Esempi di architetture parallele e distribuite. Problematiche che si affrontano nel caso parallelo e distribuito: progettare e valutare gli algoritmi.
- Programma del corso. La risorsa tempo, caso sequenziale. Notazioni asintotiche per il tasso di crescita delle funzioni. Classi di problemi risolti efficientemente in tempo sequenziale: P e FP. Problemi nel disegno di algoritmi paralleli: 1) Sintesi: servono nuovi strumenti rispetto al caso sequenziale 2) Valutazione: risorse tempo, numero di processori e efficienza per un confronto col sequenziale 3) Universalità: la questione NC = P.
- Tipi di architetture parallele: a memoria condivisa e distribuita. Il modello PRAM (Parallel RAM), architettura e struttura dei processori. Memoria centrale come canale di comunicazione in tempo O(1). Come programmare una PRAM, PRAM come architettura SIMD contro architetture MIMD. Modelli di PRAM: EREW, CREW, CRCW. Risorse di calcolo: complessità hardware p(n), complessità in tempo T(n,p(n)), definizioni.
- Misure per il confronto di algoritmi paralleli con algoritmi sequenziali: speed up e efficienza. Limite inferiore e superiore all'efficienza. Trasformazione di algoritmi paralleli in sequenziali, complessità in tempo risultante, conseguenze sull'efficienza. Efficienza come indicatore della necessità di ridurre l'hardware, principio di Wyllie.
- Efficienza come misura monotona decrescente al crescere dei processori. Il problema della SOMMATORIA, complessità sequenziale. Progetto e valutazione di un primo algoritmo parallelo di scarsa efficienza. Realizzazione dell'algoritmo per SOMMATORIA su PRAM. Verifica di fattibilità (algoritmo EREW) e correttezza (per induzione).
- SOMMATORIA: Valutazione processori/tempo dell'algoritmo generale. Efficienza tendente a zero, esigenza di ridurre il numero di processori (applicazione del principio di Wyllie). Algoritmo finale efficiente. Algoritmi paralleli efficienti per l'iterazione di operazioni associative: prodotto, and, or, xor, concatenazione, max, min. And/Or/Max/Min in tempo costante su CRCW.
- Algoritmi paralleli EREW e CREW per operazioni in algebra lineare, loro costruzione modulare a partire da SOMMATORIA: prodotto interno, matrice vettore, matrice matrice. Il problema delle SOMME PREFISSE, importanza, generalizzazioni, applicazioni. Algoritmo sequenziale, un primo algoritmo parallelo CREW col modulo SOMMATORIA. Valutazione tempo e processori, necessità di miglioramento.
- Algoritmo parallelo di Kogge-Stone per SOMME PREFISSE, pointer doubling, idea ed esempi. Dettagli dell'algoritmo di Kogge-Stone e stesura del codice. Dimostrazione di consistenza (funziona su EREW PRAM) e correttezza per induzione.Valutazione processori/tempo/efficienza dell'algoritmo di Kogge-Stone.
- Il problema della valutazione parallela di polinomi, schema modulare di un possibile algoritmo. Routine parallela di replica di informazione su CREW e EREW, valutazione delle prestazioni. Algoritmo parallelo EREW ottimo per la valutazione di polinomi.
- Query parallele, il problema della ricerca di un elemento. Soluzioni modulari efficienti per architetture CRCW, CREW, EREW. Problemi connessi al problema di ricerca: conteggio occorrenze, ultima posizione, prima posizione. Il problema dell'ordinamento (ranking). Algoritmi basati sui confronti, calcolo del lower bound sul tempo nel caso sequenziale. Algoritmi quadratici, un semplice algoritmo e sua traduzione parallela: counting sort. Analisi della versione parallela di counting sort: processori, tempo e efficienza.
- Ricerca di un miglioramento delle prestazioni traendo ispirazione dall'algoritmo ottimale mergesort. Richiamo della tecnica "Divide et impera" in mergesort e analisi della complessità in tempo con equazione di ricorrenza. Il problema dell'inerente sequenzialità della routine merge. Merge come semplice concatenazione. Definizione delle operazioni REV e MINMAX su sequenze e relative implementazioni parallele. Definizione di sequenza unimodale e bitonica, esempi. Forme grafiche delle sequenze, loro proprietà.
- La routine bitmerge di ordinamento di sequenze bitoniche. Correttezza di bitmerge per induzione. Dinamica ricorsiva di bitmerge e implementazione parallela EREW. Calcolo del tempo di bitmerge e numero di processori. Il sorting di Batcher: bitsort come mergesort con bitmerge invece di merge e uso di REV per mantenere la bitonicità. Correttezza di bitsort per induzione. Dinamica ricorsiva di bitsort. Implementazione parallela EREW, valutazione del tempo, numero di processori e efficienza.
- Considerazioni generali sull'esportabilità di buoni algoritmi sequenziali in ambito parallelo e viceversa. Tecnica del circuito euleriano per la gestione parallela di strutture dinamiche (alberi). Nozioni di teoria dei grafi: grafi diretti, circuiti euleriani, grafi euleriani, caratterizzazione di Eulero. Differenza computazionale tra grafi euleriani e hamiltoniani. Definizione di un circuito euleriano su un albero binario, sua realizzazione efficiente come lista euleriana con algoritmi paralleli EREW.
- Utilizzo della rappresentazione a lista di alberi con la routine di Kogge-Stone nella soluzione parallela efficiente di alcuni problemi su alberi: visita in preordine, calcolo della profondità dei nodi. Riassunto sull'importanza del modello PRAM. Interesse non solo teorico, i processori multicore, motivazioni per la loro introduzione. Introduzione alle architetture parallele a memoria distribuita, caratteristiche principali, funzionalità dei processori e rete di interconnessione. Parametri di una rete di interconnessione: grado, diametro, ampiezza di bisezione. I problemi MAX e ORDINAMENTO su architetture a memoria distribuita. Lower bound sul loro tempo di soluzione in funzione dei parametri di rete.
- Ancora sulla struttura delle architetture a memoria distribuita. Algoritmi di ordinamento test and swap oblivious, loro rappresentazione mediante sorting network. Sorting network anche come dispositivo parallelo. Il principio 0-1 (Knuth) nelle sorting network. Dimostrazione e importanza nella progettazione e studio di correttezza degli algoritmi di ordinamento.
- Array lineari di processori: struttura, funzionalità e parametri di rete. Lower bound sui tempi di soluzione di MAX e ORDINAMENTO. La primitiva SWAP, codice e tempo. Utilizzo dello SWAP nella soluzione del problema di SHUFFLE su array lineari, tempo, processori, efficienza. La routine SEND per trasmissioni a distanza utilizzata per il problema MAX, su array lineari. Tempo, numero di processori e efficienza. Miglioramenti alla soluzione per MAX. Progetto della routine SWAP a distanza, codice e tempo.
- La routine MINMAX su processori contigui e a distanza, codice e tempo. Il problema ORDINAMENTO, uso della sorting network ODD-EVEN. Dimostrazione di correttezza col principio 0-1. Implementazione di ODD_EVEN su array lineari, codice, tempo e processori. Tentativo di miglioramento con riduzione dei processori, l'algoritmo MERGE-SPLIT su array lineari. Considerazioni sui limiti della geometria di rete. L'architettura mesh, struttura e funzionalità della mesh quadrata. Parametri di rete e lower bound in tempo per la soluzione di MAX e ORDINAMENTO su mesh. Uso banale di una mesh come array lineare a serpente, algoritmi inefficienti. Soluzione ottimale di MAX nativa, processori, tempo. Riduzione dei processori per un algoritmo di efficienza ottima.
- Il problema ORDINAMENTO su mesh. L'algoritmo LS3sort, struttura ricorsiva. La procedura LS3merge, specifica con primitive per array lineari e dimostrazione di correttezza grafica tramite il principio 0-1. Valutazione in tempo di LS3merge, equazione di ricorrenza per il tempo di LS3sort, ottimalità, calcolo efficienza.
- Algoritmi distribuiti. Ambiente di calcolo distribuito: entità e link. Funzionalità delle entità. Eventi, azioni e regole. Comportamento del sistema, comportamento omogeneo. Parametri di rete. Comunicazione, assiomi e restrizioni. Misure di complessità. Definizione di problema. Il primo problema: BROADCAST.
- Configurazioni di un sistema distribuito, esecuzione di un protocollo. Stati iniziali e terminali. Formalizzazione della soluzione di un problema: condizione di correttezza e terminazione. Il protocollo Flooding per la soluzione del problema BROADCAST, complessità di messaggi e tempo causale. Lower bound su tempo e messaggi per la soluzione di BROADCAST. Il problema WAKE-UP. Il protocollo WFlood, sua complessità.
- Il problema TRAVERSAL, applicazioni nella gestione di risorse condivise. L'approccio Depth-First, richiami. L'implementazione della strategia Depth-First in ambiente distribuito, il protocollo DF-Traversal, definizione di stati, messaggi e azioni. Valutazione delle prestazioni di DF-Traversal, upper e lower bound su messaggi e tempo. Possibili miglioramenti, introducendo ulteriori messaggi.
- Il problema SPANNING TREE, definizione e motivazioni: ottimizzazione dei messaggi per la soluzione di diversi problemi. Soluzione distribuita a SPANNING TREE con un unico iniziatore. Il protocollo Shout, schema Flooding+Reply, esempio di esecuzione. Codice di Shout. Correttezza del protocollo, misure di complessità: messaggi e tempo. Miglioramento di Shout: Shout+, complessità di messaggi. Cenni ad altri protocolli di soluzione per SPANNING TREE.
- Il problema ELECTION, definizione e motivazioni: impossibilità di soluzione sotto restrizioni R, banale sotto restrizioni RI. Soluzione sotto restrizioni IR in una topologia ad anello. Due strategie: elezione del minimo, elezione del minimo tra le starting entità. Protocollo All the Way, terminazione e complessità per entrambe le strategie.
- I problemi ROUTING e SHORTEST PATH, definizioni e motivazioni. Shortest Path sotto restrizioni IR, definizione della Full Routing Table. Due protocolli diversi: Gossiping e Iterated Construction. Gossiping per la costruzione di MAP(G) per un sistema G e sua complessità di comunicazione. Iterated Construcion per la costruzione della Full Routing Table, idea di correttezza, vantaggi e sua complessità di comunicazione e tempo.
Algoritmi paralleli Algoritmi distribuiti Dispense e testi consigliati
- N. Santoro. Design and Analysis of Distributed Algorithms. Wiley-Interscience, 2006.