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 x i begin for i = log n -1 to 0 do for j = 2 i to 2 i+1 -1 pardo P j : x j = x 2j + x 2j+1 P 1 :sp 1 = 0 for i = 0 to log n -1 do for j = 2 i to 2 i+1 -1 pardo P j : sp 2j = sp j sp 2j+1 = sp j + x 2j for i = n to 2n-1 pardo P i :x i = x i + sp i end Tempo parallelo logaritmico Algoritmi Paralleli e Distribuiti a.a.2008/09 2 X 1 +…+x 4 X 1 +x 2 X 3 +x 4 X 5 +…+x 8 X 5 +x 6 X 7 +x 8 X 1 +…+x 8 x1x1 x2x2 x2x2 x3x3 x5x5 x6x6 x7x7 x8x8 P2P2 P1P1 P4P4 P8P8 P5P5 P6P6 P7P7 P3P3 P 15 X 1 +…+x 4 X 1 +x 2 X 3 +x 4 X 5 +…+x 8 X 5 +x 6 X 7 +x 8 X 1 +…+x 8 x1x1 x2x2 x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 sp = X 1 +…+x 4 sp = 0 x1x1 X 1 +x 2 sp = X 1 +…+x 6 sp = X 1 +…+x 7 sp = 0
Somme prefisse su mesh Ogni processore ha il valore da sommare in x i,j begin for i = 0 to R-1 pardo for j = 1 to C-1 do P i,j : x i,j = x i,j + x i,j-1 P 0,C-1 : su 0,C-1 = 0 for i = 1 to R-1 do P i,C-1 : su i,C-1 = x i-1,C-1 + su i-1,C-1 for i = 0 to R-1 pardo for j = C-2 to 0 do P i,j :su i,j = su i,j+1 for i = 0 to R-1 pardo for j = 0 to C-1 pardo P i,j :x i,j = x i,j + su i,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 P i : b i = i * h // inizio blocco i-esimo for j = 1 to h -1 do A[ b i + j ] = A[ b i + j ] + A[ b i + j-1 ] B[ i ] = A[ b i + h-1 ] // lultimo del blocco PrefixSum(B, k) for i = 1 to k-1 pardo P i :for j = 0 to h -1 do A[ b i + j ] = A[ b i + 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… 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 or not and comp x y min{x, y} max{x, y}
Rete combinatoria Una rete combinatoria C può essere vista come un grafo diretto aciclico G C avente un nodo per ciascun elemento combinatorio c e un arco diretto (c',c") se loutput 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 G C e corrisponde al numero di input dellelemento. Il fan-out di un elemento c è il grado uscente del nodo c in G C. È 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