Professional Documents
Culture Documents
P4.2 Projektovanje Paralelnih Algoritama 3
P4.2 Projektovanje Paralelnih Algoritama 3
algoritama III
Primeri paralelnih algoritama, II deo
Dve verzije paralelnog algoritma za sortiranje
sa spajanjem podnizova
1
I verzija paralelnog algoritma
sortiranja sa spajanjem podnizova
Za serijski algoritam T(n) = (n lg n)
Serijski algoritm koristi pristup podeli-i-zavladaj
Paralelizacija korišćenjem ugnježdenog paralelizma
Prvi rekurzivni poziv postaje izmrešćen poziv:
2
Analiza procedure
Merge-Sort-P (1/2)
Rad:
Pošto je procedura Merge serijska, njen rad i raspon
su oba (n)
Rekurencija za rad T1(n) procedure Merge-Sort-P:
T1(n) = 2 T1(n/2) + (n) = (n lg n)
Rad je dakle isti kao T(n) serijskog dvojnika
Raspon:
Kako se dva rekurzivna poziva mogu izvršavati u ||:
T∞(n) = T∞(n/2) + (n) = (n)
Paralelizam: T1(n)/T∞(n) = (lg n)
3
Analiza procedure
Merge-Sort-P (2/2)
Ova procedura može da ostvari linearno
ubrzanje na nekoliko procesora
Ali ne može se efektivno skalirati na 100-ne procesora
4
Strategija podeli-i-zavladaj za
paralelno spajanje podnizova (1/3)
Spaja dva sortirana podniza:
T[p1..r1] dužine n1 = r1- p1+1 i
T[p2..r2] dužine n2 = r2- p2+1
u drugi podniz A[p3..r3] dužine n3 = r3- p3+1
Uprošćavajuća pretpostavka: n1 n2
Dva ključna koraka na početku:
Pronaći srednji element x = T[q1], podniza T[p1..r1],
gde je q1 = (r1+p1)/2; q1 je median!
Pronaći indeks q2 niza T[p2..r2] takav da podniz ostaje
sortiran nakon umetanja x između T[q2-1] i T[q2].
5
Strategija podeli-i-zavladaj za
paralelno spajanje podnizova (2/3)
7
Procedura Binary-Search(x, T, p, r)
Binary-Search(x, T, p, r) Uzima ključ x i podniz T[p..r] i vraća
1.low = p jedan od sledeća tri rezultata:
2.high = max(p, r + 1) 1. Ako je T[p..r] prazan (r < p), onda
3.while low < high vraća indeks p
4. mid = (low+high)/2
2. Ako je x T[p], pa time manji ili
5. if x T[mid]
jednak od svih elemenata T[p..r],
6. high = mid
onda vraća indeks p
7. else low = mid + 1
8.return high 3. Ako je x > T[p], onda vraća najveći
indeks q, u opsegu p < q r + 1,
takav da je T[q-1] < x
8
Analiza Procedure Binary-Search
Poziv procedure uzima (lg n) serijskog
vremena u najgorem slučaju
gde je n = r – p + 1 veličina podniza na kom se
procedura izvršava
Pošto je Binary-Search serijska procedura, njen
rad i raspon su u najgorem slučaju (lg n), oba
9
Procedura P-Merge
(paralelno spajanje ponizova)
P-Merge(T, p1, r1, p2, r2, A, p3) Spaja podnizove
1.n1 = r1 – p1 + 1 T[p1..r1] i T[p2..r2] u
2.n2 = r2 – p2 + 1 podniz A[p3..r3]
3.if n1 < n2 // osiguraj da je n1 n2 3-6: n1 n2
4. zameni p1 sa p2
7: osnovni slučaj?
5. zameni r1 sa r2
6. zameni n1 sa n2 9-15: realizuju
7.if n1 == 0 // oba podniza prazna? strategiju podeli-i-
8. return zavladaj
9.else q1 = (p1+r1)/2 10-11: q2 i q3
10. q2 = Binary-Search(T[q1], T, p2, r2) 12: direktno kopira
11. q3 = p3 + (q1 – p1) + (q2 – p2) T[q1] u A[q3]
12. A[q3] = T[q1] 13-15: ugnježdeni
13. spawn P-Merge(T, p1, q1 – 1, p2, q2 – 1, A, p3) paralelizam
14. P-Merge(T, q1 + 1, r1, q2, r2, A, q3 + 1)
15. sync
10
Analiza procedure P-Merge (1/4)
Raspon:
Dva podniza sadrže ukupno n =n1+n2 elemenata
Rekurzivni pozivi rade ||. Koji je skuplji?
Ključ: max br. elemenata u bilo koja od ta dva
rekurzivna poziva može biti najviše 3n/4
Kako je n2 n1, sledi: n2 = 2n2/2 (n1+n2)/2 = n /2
U najgorem slučaju, jedan od dva rekurzivna poziva spaja
n1/2 elemenata podniza T[p1..r1] sa svih n2 elemenata
podniza T[p2..r2], tj. ukupno spaja ovoliko elemenata:
n1/2 + n2 n1/2 + n2/2 + n2/2 = (n1 + n2)/2 + n2/2
n/2 + n/4 = 3n/4
11
Analiza procedure P-Merge (2/4)
Dodavanjem cene (lg n) za pozive procedure Binary-
Search u liniji 10, dobija se sledeća rekurencija:
T∞(n) = T∞(3n/4) + (lg n)
Za osnovni slučaj raspon je (1)
Jer se linije 1-8 izvršavaju u konstantnom vremenu
Rešenje je T∞(n) = (lg2 n), što se metodom smene
može lako proveriti
12
Analiza procedure P-Merge (3/4)
Rad:
Pošto svaki od n elemenata mora biti iskopiran iz niza
T u niz A, sledi da je T1(n) = (n)
Drugo, pokažimo da je T1(n) = O(n)
Bin. pretraga u liniji 10 uzima (lg n) vremena
što dominira nad drugim radom izvan rekurzivnih poziva
Već pokazano: jedan rekurzivni poziv radi na najviše
elemenata 3n/4, pa je:
T1(n) = T1(n) + T1((1 - )n) + (lg n)
Parametar leži u opsegu 1/4 3/4
13
Analiza procedure P-Merge (4/4)
Sledi dokaz da je rešenje ove rekurentne jednačine
T1(n) = O(n)
Metod zamene: pretpostavimo da je T1(n) c1n – c2lg n za
neke pozitivne konstante c1 i c2. Zamenom:
T1(n) (c1n – c2lg(n)) + (c1(1 - )n – c2lg((1 - )n)) +
(lg n)
= ... = c1n – c2lg n – (c2(lg n + lg((1 - ))) – (lg n))
c1n – c2lg n
c2 se izabere dovoljno veliko, tako da član c2(lg n + lg((1 -
))) dominira nad (lg n)
c1 se bira dovoljno veliko da se zadovolji rekurenciju
Znači T1(n)= (n), pa je paralelizam T1(n)/T∞(n) =
(n/lg2 n).
14
II verzija paralelnog algoritma
sortiranja sa spajanjem podnizova
Poziv P-Merge-Sort(A, p, r, B, s) sortira
elemente iz A[p..r] i smešta ih u B[s..s+r–p]
P-Merge-Sort(A, p, r, B, s) 1: izračuna broj elemenata n
1.n = r – p + 1 2-3: osnovni slučaj
2.if n == 1 4: dodeljuje privremeni niz T
3. B[s] = A[p] 5: računa indeks q niza A[p..r]
4.else neka je T[1..n] novi niz radi njegove podele na dva
5. q = (p+r)/2 podniza A[p..q] i A[q+1..r]
6. q’ = (q – p) + 1 6: računa broj elemenata q ’ u
7. spawn P-Merge-Sort(A, p, q, T, 1) prvom podnizu A[p..q]
8. P-Merge-Sort(A, q+1, r, T, q’+1) 7-8: izmrešćeni i običan
9. sync rekurzivni poziv
10.P-Merge(T, 1, q’, q’+1, n, B, s) 10: spaja T[1..q ’] i T[q ’+1..n]
u izlazni podniz B[s..s+r–p]
15
Analiza procedure
P-Merge-Sort (1/2)
Rad:
Pošto je rad procedure P-Merge TPM1(n)= (n), rad
procedure P-Merge-Sort je:
T1(n) = 2 T1(n/2) + TPM1(n)
= 2 T1(n/2) + (n)
Rešenje je T1(n) = (n lg n), prema drugom slučaju
master teoreme
Raspon:
Pošto dva rekurzivna poziva rade logički u paraleli,
jedan od njih se može ignorisati
16
Analiza procedure
P-Merge-Sort (2/2)
Pošto raspon procedure P-Merge iznosi (lg2 n),
raspon procedure P-Mereg-Sort je:
T∞(n) = T∞(n/2) + TPM∞(n)
= T∞(n/2) + (lg2 n)
Master teorema ne može. Rešenje T∞(n) = (lg3 n),
se može proveriti metodom smene
Paralelizam:
T1(n)/T∞(n) = (n lg n)/(lg3 n) = (n / lg2 n)
Paralelizam Merge-Sort-P je bio samo (lg n)
(n / lg2 n) je znatno bolje
Deo se može žrtvovati ukrupnjavanjem osnovnog slučaja
17