Algoritmi Paralleli e Distribuiti
a.a. 2008/09
Lezione del 20/03/2009
Prof.ssa ROSSELLA PETRESCHI
a cura del Dott. SAVERIO CAMINITI
Somme prefisse su albero binario
Le n foglie hanno già il valore da sommare nella variabile xi
begin
P
for i = log n -1 to 0 do
for j = 2i to 2i+1-1 pardo
P X +…+x
Pj:
xj = x2j + x2j+1
X1+…+x8
1
1
2
P4 X1+x2
P1: sp1 = 0
for i = 0 to log n -1 do
for j = 2i to 2i+1-1 pardo
Pj:
sp2j = spj
sp2j+1 = spj + x2j
for i = n to 2n-1 pardo
Pi:
xi = xi + spi
end
P8 x1
X5+…+x8 P
3
4
X5+x6 P
6
P5 X3+x4
x2
x2
x3
x5
x6
X7+x8 P
7
x7
x8
P15
sp = 0
X1+…+x8
sp = X1+…+x4
sp = 0
X1+…+x4
sp = X1+…+x6
X1+x2
sp = 0
X1+x2
X3+x4
X5+x6
X7+x8
sp = X1+…+x7
x1
sp = 0
x1
X5+…+x8
x2
x3
x4
x5
x6
x7
x8
Tempo parallelo logaritmico
Algoritmi Paralleli e Distribuiti a.a.2008/09
2
Somme prefisse su mesh
Ogni processore ha il valore da sommare in xi,j
begin
for i = 0 to R-1 pardo
for j = 1 to C-1 do
Pi,j:
xi,j = xi,j + xi,j-1
P0,C-1: su0,C-1 = 0
for i = 1 to R-1 do
Pi,C-1:
sui,C-1 = xi-1,C-1 + sui-1,C-1
for i = 0 to R-1 pardo
for j = C-2 to 0 do
Pi,j:
sui,j = sui,j+1
for i = 0 to R-1 pardo
for j = 0 to C-1 pardo
Pi,j:
xi,j = xi,j + sui,j
end
Tempo parallelo R+C
Algoritmi Paralleli e Distribuiti a.a.2008/09
3
Somme prefisse con
Accellerated Cascading
Si adoperano k processori
Per semplicità assumiamo n multiplo di k: n = h·k
begin
for i = 0 to k-1 pardo
Pi:
bi = i * h
// inizio blocco i-esimo
for j = 1 to h -1 do
A[ bi + j ] = A[ bi + j ] + A[ bi + j-1 ]
B[ i ] = A[ bi + h-1 ]
// l’ultimo del blocco
PrefixSum(B, k)
for i = 1 to k-1 pardo
Pi:
for j = 0 to h -1 do
A[ bi + j ] = A[ bi + j ] + B[ i-1 ]
end
Tempo parallelo O(h + log k)
Algoritmi Paralleli e Distribuiti a.a.2008/09
4
Elemento combinatorio
Def: Un elemento combinatorio è un qualunque elemento di
circuito che abbia un numero costante di input e output e che
esegua una funzione ben precisa.
Esempi:
• Porte logiche
• Comparatore
• ecc…
not
and
min{x, y}
x
y
or
comp
max{x, y}
Più elementi combinatori possono essere collegati tra di loro
formando una rete combinatoria dove l'output di un
elemento può essere l'input di uno o più altri elementi.
Algoritmi Paralleli e Distribuiti a.a.2008/09
5
Rete combinatoria
Una rete combinatoria C può essere vista come un grafo diretto aciclico
GC avente un nodo per ciascun elemento combinatorio c e un arco diretto
(c',c") se l’output di c' è input di c".
La dimensione di una rete combinatoria è il numero di nodi del grafo e la
profondità è il diametro del grafo.
Il fan-in di un elemento c è il grado entrante del nodo c in GC e
corrisponde al numero di input dell’elemento.
Il fan-out di un elemento c è il grado uscente del nodo c in GC.
È da notare che non necessariamente il numero di output di un elemento
combinatorio è uguale al suo fan-out, infatti un elemento combinatorio
con un solo filo di output può “servire” un numero qualunque di altri
elementi.
Algoritmi Paralleli e Distribuiti a.a.2008/09
6
Teorema di Brent
Teorema (CREW): ogni algoritmo che lavora su
una rete combinatoria di profondità d e dimensione
n che sia a fan-in limitato, può essere simulato da un
algoritmo che lavora su una PRAM CREW con p
processori in O(n/p+d) tempo.
Teorema (EREW): ogni algoritmo che lavora su
una rete combinatoria di profondità d e dimensione
n che sia a fan-in e fan-out limitato, può essere
simulato da un algoritmo che lavora su una PRAM
EREW con p processori in O(n/p+d) tempo.
Algoritmi Paralleli e Distribuiti a.a.2008/09
7
Teorema di Brent - Esempio
Profondità: d = 5
Dimensione: n = 22
Processori: p = 3
Algoritmi Paralleli e Distribuiti a.a.2008/09
8
Scarica

Lezione del 20/03/2009