Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Lezione n°19 Prof.ssa Rossella Petreschi
Lezione del 12 /12 /2014 del Corso di Algoritmica
2
Il nostro obiettivo Vogliamo analizzare come si deve progettare un algoritmo quando si vogliano usare contemporaneamente più entità addette al calcolo.
3
Differenza fra sistema multi-entità e sistema sequenziale
Le entità non conoscono lo stato globale del sistema, ma conoscono solo il loro stato e quello delle entità adiacenti Le decisioni prese si basano sullo stato globale del sistema (non è detto che l’accesso all’intero stato avvenga in una singola istruzione) La relazione d’ordine temporale indotta negli eventi che costituiscono la esecuzione di un algoritmo su un sistema multi-entità non è totale: due entità p e q possono richiedere di accedere contemporaneamente alla stessa risorsa r. Gli eventi che costituiscono l’esecuzione di un algoritmo sequenziale sono totalmente ordinati: un processo p accede ad una risorsa r solo dopo che il processo q ha completato di usufruire della risorsa r. Più computazioni sono possibili contemporaneamente Dato un programma e un input solo una singola computazione é possibile
4
Classificazione Sistemi sincroni: Sistemi asincroni:
PRAM (Parallel Random Access Machine):con memoria condivisa INM (Interconnection Networks Machine):con memoria locale Sia PRAM che INM sono macchine SIMD(Single Instruction, Multiple Data), ovvero macchine in cui ogni processore esegue la stessa istruzione su dati differenti. La tradizionale macchina sequenziale di Von Neumann è SISD( Single Instruction, Single Data): ad ogni passo, l'unica unità di controllo esegue una sola istruzione che opera su di un singolo dato. Sistemi asincroni: Sistemi Concorrenti:con memoria condivisa Sistemi Distribuiti: con memoria locale Entrambi questi sistemi sono di tipo MIMD (Multiple Instructions, Multiple Data), ovvero ogni processore ha un suo insieme di dati ed un suo insieme di istruzioni per elaborarli
5
Macchina parallela Il modello di macchina parallela comune sia a PRAM che ad INM è costituito da un insieme di processori, tipicamente dello stesso tipo, interconnessi in modo tale da consentire il coordinamento delle attività e lo scambio dei dati. Poiché lo stato di un computer é dato dalla lista del contenuto di tutte le celle di memoria, il parallelismo di un computer è dato dal massimo numero di celle che cambiano il loro stato durante l’esecuzione di un singolo ciclo operativo della macchina. Il parallelismo di una macchina sequenziale è pari ad 1. 5
6
Broadcast su P-RAM EREW
Si adoperano n processori Broadcast(x) begin P0: A[ 0 ] = x for i = 0 to log n -1 do for j = 2i to 2i+1-1 pardo Pj: A[ j ] = A[ j-2i ] end Tempo parallelo logaritmico x
7
Broadcast su rete a Vettore
Si adoperano N processori Input su P0 Broadcast(x) begin P0: a0 = x for i = 1 to N-1 do Pi: ai = ai-1 end Tempo parallelo N x N-1 7
8
Si adoperano RxC processori
Broadcast su mesh Si adoperano RxC processori Input su P0,0 Broadcast(x) begin P0,0: a0,0 = x for j = 1 to C-1 do P0,j: a0,j = a0,j- for i = 1 to R-1 do for j = 0 to C-1 pardo Pi,j: ai,j = ai-1,j end Tempo parallelo C+R x C-1 1 2 8
9
Algoritmo Distribuito
Un algoritmo distribuito D si può rappresentare come un grafo G = (P, C), dove l’insieme dei nodi è l’insieme dei processori e l’insieme degli spigoli orientati è un insieme di canali di comunicazione (generalmente unidirezionali). Tutti i processori, con l’eccezione di un sottoinsieme al quale è permesso di mandare messaggi “spontaneamente”, sono reattivi, ovvero eseguono un qualunque task solo come risposta al ricevimento di un messaggio da un altro task. Un solo blocco di processori Pinit può inizialmente eseguire un task a scopo di inizializzazione. 9
10
Schema base di un algoritmo distribuito
begin Pinit: exec eventuali operazioni di inizializzazione; send messaggio ai vicini repeat Pi: receive messaggio M e BM è vero exec qualche operazione send messaggi ai vicini until un segnale di terminazione globale arriva a D end La operazione di send invia un messaggio su uno o più canali di comunicazione uscenti da Pi. Ogni processore ha una coda di messaggi ricevuti. La receive estrae un messaggio dalla coda di Pi. 10
11
Differenza fra sistema distribuito e parallelo
Sistema parallelo sistema multiutente che si riferisce ad ambienti di lavoro di tipo collaborativi è pensato per essere usato da un singolo utente o processo per garantire la massima velocizzazione di una singola applicazione computer, processi o processori non omogenei e asincroni processori omogenei sincroni computer, processi o processori fra loro autonomi processori usati insieme per un’unica computazione problemi di sicurezza connessi alla rete (perdita di messaggi, cadute di sitema, condivisione dei dati, etc…) in genere è considerato come un sistema fisicamente e logicamente inaccessibile 11
12
La rete ad anello Si suppone che i nodi dell’anello siano identificati da valori diversi scelti in un insieme di positivi qualunque, senza alcun vincolo di ordine. L’anello si considera unidirezionale. I singoli processi non conoscono la dimensione della rete; sono però in grado di distinguere fra vicino sinistro e vicino destro. 12
13
Broadcast in un sistema distribuito ad anello
P0 ha l’informazione da distribuire nella variabile inf begin P0: send inf al successore repeat Pi: receive inf da predecessore send inf al successore until P0 riceve messaggio dal predecessore end In una rete ad anello ad n nodi, vengono inviati n messaggi in n passi P0 P2 Pn-1 P1 P3 13
14
Broadcast in una qualsiasi rete a connessione fissa
Assumiamo connessioni unidirezionali e rete aciclica begin Pinit: Ninit = { q : q è un vicino di Pinit } send messaggio ad ogni q in Ninit repeat Pi: receive messaggio da un vicino p Ni = { q : q è un vicino di Pi } send messaggio ad ogni q in Ni until … end Si ricorda che Pi invia lo stesso messaggio a tutti i suoi vicini contemporaneamente però sia i processori sia i canali di comunicazione sono eterogenei, quindi il tutto è asincrono. In una rete di n nodi, vengono inviati O(m) messaggi in O(d) passi m = numero archi d = diametro della rete Manca il segnale di terminazione globale Pinit 14
15
Broadcast con eco in una qualsiasi rete a connessione fissa
Per risolvere il problema della terminazione si usa l’eco e servono connessioni bidirezionali begin Peco: Neco= { q : q è un vicino di Peco } send messaggio ad ogni q in Neco conteco = 0 while conteco < | Neco | receive messaggio da un vicino incrementa conteco termina Pi≠ eco: receive messaggio da un vicino p che chiamo padre Ni = { q p : q è un vicino di Pi } send messaggio ad ogni q in Ni conti = 0 while conti < | Ni | incrementa conti send messaggio al padre p end 15
16
Complessità del broadcast con eco
Durante una esecuzione dell’algoritmo di Broadcast con eco vengono inviati in totale Md = 2m messaggi (2 per ogni arco) e l’algoritmo richiede Td = O(d) passi di comunicazione (dove d è il diametro della rete). 16
17
Esempio broadcast con eco 1
0/4 Processore non raggiunto dal Broadcast Processore raggiunto dal Broadcast (all’interno sono riportati i valori di conti e di |Ni|) Messaggio di Broadcast Processore che ha ricevuto conferma da tutti i vicini (incluso l’eco) Messaggio di eco Peco Passo 1: Inizializzazione Ogni processore manda solo due messaggi: uno di broadcast ai suoi vicini dopo averlo ricevuto dal padre (prime istruzioni del processore Pi) e uno di eco dopo aver ricevuto messaggi da tutti i suoi vicini (al termine del ciclo while). La distinzione tra messaggi di broadcast e di eco è soltanto logica, di fatto i messaggi sono identici. Nell’esempio, al passo 2, abbiamo due tipi di processori che ricevono messaggi: quelli ancora in attesa del padre e quelli che già sono nel ciclo while. In particolare il processore Pc riceve un messaggio sia da Pa che da Pb. Supponiamo che Pa sia il padre, in quanto il messaggio da lui inviato è finito in testa alla coda. Pc invierà subito un messaggio a Pb, che incrementa il suo contatore, mentre invierà un messaggio a Pa soltanto dopo aver ricevuto Nc messaggi dai suoi vicini (incluso quello inviato da Pb). Il contatore di Pd ha già raggiunto il suo valore massimo e quindi Pd è pronto per mandare un eco al padre. 0/2 0/4 1/2 2/2 1/4 Pa Pc Pd Pb Passo 2 17
18
Esempio broadcast con eco 2
0/2 1/4 2/2 1/1 2/2 2/4 4/4 Passo 3 Passo 4 4/4 Passo 5 Passo 6 18
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.