Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAgnolo Amore Modificato 8 anni fa
1
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Somme prefisse Lezione n°2
2
Somma su albero binario (1) Con n foglie e 2n-1 processori Input alle foglie output alla radice Numerazione dalla radice alle foglie Somma(x) begin for i = n to 2n-1 pardo P i :a i = read() /* input alle foglie */ for i = log n -1 to 0 do for j = 2 i to 2 i+1 -1 pardo P j : a j = a 2j + a 2j+1 return a 1 end Tempo parallelo logaritmico 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
3
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 P 13 P 15 P9P9 P1P1 P 10 P 11 P 12 P 14 P8P8 Somma su albero binario (2) Con n foglie e 2n-1 processori Input alle foglie output alla radice Numerazione dalle foglie alla radice Somma(x) begin for i = 1 to n pardo P i :a i = read() /* input alle foglie */ for i = log n -1 to 0 do for j = 2 i to 2 i+1 -1 pardo P 2n-j : a 2n-j = a 2n-2j + a 2n-(2j+1) return a 2n-1 end Tempo parallelo logaritmico
4
Somme prefisse Sequenziale PrefixSum(A, n) begin for i = 1 to n-1 do A[ i ] = A[ i ] + A[ i-1 ] end Tempo O(n) 25132601 278111319 20
5
Somme prefisse su P-RAM P-RAM EREW con n processori PrefixSum(A, n) begin for i = 0 to log n -1 do for j = 0 to n-1 -2 i pardo P j : A[ j+2 i ] = A[ j ] + A[ j+2 i ] end Tempo Parallelo O(log n) 25132601 27645861 2513260 27811 12119 2 7 6 4 5 8 278 1319 20 2 7 8 11
6
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 = 1 to R-1 pardo for j = C-2 downto 0 do P i,j :su i,j = su i,j+1 for i = 1 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
7
Somme prefisse su albero binario Le n foglie hanno già il valore da sommare nella variabile x i begin for i = log n -1 downto 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 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
8
Concorrenza in lettura e scrittura PRAM – EREW: Exclusive Read, Exclusive Write; – CREW: Concurrent Read, Exclusive Write; – ERCW: Exclusive Read, Concurrent Write; – CRCW: Concurrent Read, Concurrent Write; Memoria P0P0 P1P1 P2P2 P n-1
9
Scrittura Concorrente Nei modelli a scrittura concorrente, quando più processori richiedono di scrivere in una stessa locazione di memoria condivisa, viene consentita la scrittura ad un solo processore in accordo con uno dei seguenti criteri di scelta: – stabilita una scala di priorità tra i processori, si permette la scrittura solo al processore nella prima posizione della scala (CRCW prioritaria); – supposto che tutti i processori vogliano scrivere lo stesso valore, consentire la scrittura ad uno qualunque dei processori (CRCW arbitraria). Esistono in letteratura altri criteri, anche se meno usati, che permettono ad un fissato processore di scrivere nella cella di memoria il valore di una funzione di tutti i dati (ad esempio il massimo, lo xor, la somma).
10
Esempio di Algoritmo su P-RAM di tipo CREW Si adoperano n processori Assumiamo A[ i ] tutti distinti Cerca(A, n, x) begin indice = -1 for i = 0 to n-1 pardo P i :if A[ i ] = x then indice = i /* lettura concorrente di x */ return indice end Tempo parallelo costante Se A può contenere elementi ripetuti allora più processori possono scrivere concorrentemente la variabile indice: il modello necessario in tal caso è la P-RAM CRCW con scrittura concorrente basata su priorità dei processori (es viene scritto il valore dato dal processore di indice massimo tra quelli che tentano di scrivere).
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.