Sunteți pe pagina 1din 14

CURS II (1)

Exemplul 1
Distanta intr-o lista inlantuita: calculati d[i] = distanta fata de
ultimul element din lista
0, if next[i]=nil
d[i] =
d[next[i]]+1, if next[i]nil

CURS II (2)
Rank_Computation
(1) forall i in parallel do
(2)
if next [i]=nil then d [i] 0 else d [i] 1
(3)
endif
(4) endfor
(5) while there exists a node i such that next [i]
nil do
(6)
forall j in parallel do
(7)
if next [j] nil then
(8)
d [j] d [j] + d [next [j]]
(9)
next [j] next [next [j]]
(10)
endif
(11) endfor
(12) endwhile

CURS II (3)
Implementare
CRCW PRAM: liniile (2), (7), (8), (9) totul este OK
linia (5) pe masini cu fuziune (AND)
CREW PRAM: liniile (2), (7), (8), (9) totul este OK
linia (5) se inlocuieste cu
for k=1 to [log n] do
EREW PRAM: procesoarele Pi si Pj pot citi simultan d [i] daca
next [j]=i. Se inlocuieste
d [j] d [j] + d [next [j]]
cu
temp [j] d [next [j]]
d [j] d [j] + temp[j]

CURS II (4)
Exemplul 2
Calculul prefixului: pentru vectorul (x1 , x2 , . . . xn) si o operatie
asociativa , sa se claculeze elementele vectorului (y1 , y2 , . . .
yn) , unde
x1 , daca i =1
yi =

yi-1 xi , daca i > 1

CURS II (6)
Exemplul 3
Calculul distantei intr-un arbore binar: pentru un arbore binar
sa se calculeze distanta de la fiecare nod la radacina.
Arborele se da sub forma a 3 vectori: tata[i], st[i], dr[i].

CURS II (8)
Tehnica ciclului Eulerian: ciclu care traverseaza fiecare muchie o
singura data, chiar daca poate trece de mai multe ori prin acelasi
nod.
Construim un graf orientat atasat arborelui.
1.Fiecarui nod din arbore ii atasam un grup de 3 noduri in graf:
A,B,C. Fiecarui astfel de nod ii atasam un procesor.
2.Structura arborelui este pastrata pentru grupurile de 3 noduri
-arc intre fiecare procesor A dintr-un nod si procesorul A al fiului
stang, daca exista, altfel procesorul B din acelasi nod
-arc intre fiecare procesor B dintr-un nod si procesorul A al fiului
drept, daca exista, altfel procesorul C din acelasi nod
-arc intre fiecare procesor C dintr-un nod si procesorul B al tatalui,
daca el este descendent stang, sau procesorul C al tatalui, daca este
descendent drept. Procesorul C din radacina indica nil

CURS II (9)
A
A

B
A

C
B

C
B

C
B

C
B

C
B

CURS II (10)
Pas 1: turul Eulerian formeaza o lista ciclu care incepe cu
procesorul A al radacinii si se termina cu procesorul C al radacinii.
Aceasta constructie se poate face in O(1)
Initializam cu

1 pentru fiecare procesor A


0 pentru fiecare procesor B
-1 pentru fiecare procesor C

CURS II (11)
A
1

-1

C
B

0
1

-1

-1

-1
0

-1

-1
0

-1
0

-1
0

-1
0

CURS II (12)
Pas 2: calculam prefixul pentru aceasta lista unde operatia este cea
de adunare. Distanta in arbore se va afla in procesorul C.
A
1

1
2

2
3

3
4

2
3

3
4

2
3

3
4

CURS II (13)
Corectitudine
Vizitarea oricarui subarbore nu are efect asupra distantei
Fiecare procesor A contribuie cu 1 la calculul distantei
Fiecare procesor B contribuie cu 0 la calculul distantei deoarece
distanta decendentului drept egalizeaza distanta descendentului
stang
Fiecare procesor C scade distanta cu 1 corespunzator urcarii
unui nivel in arbore
Eficienta
Lista produsa de itinerariul Eulerian se calculeaza in O(1)
Avem 3n procesoare
Timpul de executie in paralel este O(log n)
Se poate implementa pe EREW PRAM

CURS II (14)
Evaluarea performantei algoritmilor PRAM
Fie P o problema de dimensiune n:
TS(n): timpul celui mai bun algoritm secvential
TP(p,n): timpul algoritmului PRAM cu p procesoare
Costul algoritmului PRAM: C(p,n) = p.TP(p,n)
Timpul de lucru PRAM: W(p,n) = suma timpilor fiecarui
procesor
Accelerarea PRAM: S(p,n) = TS(n) / TP(p,n)
Eficienta PRAM: E(p,n) = S(p,n) / p

CURS II (15)
Propozitia 1.
Fie A un algoritm ce ruleaza pe un PRAM cu p procesoare in
timp t si cost c. Atunci A poate fi rulat pe un PRAM cu p< p
procesoare in timp O(t.p/p) si cost cel mult 2c.
Demonstratie.
Fiecare pas din A rulat pe primul PRAM se poate simula printr-o
secventa de p/p pasi in al doilea

CURS II (16)
Teorema lui Brent.
Fie A un algoritm ce necesita m operatii pe un PRAM cu un
numar nedefinit de procesoare in timp t. Atunci A poate fi rulat
pe un PRAM cu p procesoare in timp O(m/p+t).
Demonstratie.
La fiecare pas i, A executa m(i) operatii. Pasul i poate fi simulat
printr-o secventa de m(i)/p m(i)/p +1 pasi.

S-ar putea să vă placă și

  • Coduri
    Coduri
    Document249 pagini
    Coduri
    pisti1989
    Încă nu există evaluări
  • 16.1 Coduri Liniare Si Coduri Convolut Ionale
    16.1 Coduri Liniare Si Coduri Convolut Ionale
    Document13 pagini
    16.1 Coduri Liniare Si Coduri Convolut Ionale
    beculetzu
    Încă nu există evaluări
  • COD18
    COD18
    Document13 pagini
    COD18
    pisti1989
    Încă nu există evaluări
  • COD13
    COD13
    Document15 pagini
    COD13
    pisti1989
    Încă nu există evaluări
  • COD14
    COD14
    Document12 pagini
    COD14
    pisti1989
    Încă nu există evaluări
  • COD13
    COD13
    Document15 pagini
    COD13
    pisti1989
    Încă nu există evaluări
  • COD12
    COD12
    Document12 pagini
    COD12
    pisti1989
    Încă nu există evaluări
  • COD6
    COD6
    Document12 pagini
    COD6
    pisti1989
    Încă nu există evaluări
  • COD11
    COD11
    Document11 pagini
    COD11
    pisti1989
    Încă nu există evaluări
  • COD1
    COD1
    Document12 pagini
    COD1
    pisti1989
    Încă nu există evaluări
  • COD20
    COD20
    Document17 pagini
    COD20
    pisti1989
    Încă nu există evaluări
  • ADP Prezentare
    ADP Prezentare
    Document1 pagină
    ADP Prezentare
    pisti1989
    Încă nu există evaluări
  • Curs 5
    Curs 5
    Document6 pagini
    Curs 5
    pisti1989
    Încă nu există evaluări
  • Curs 3
    Curs 3
    Document14 pagini
    Curs 3
    pisti1989
    Încă nu există evaluări
  • Arbori Rosu Negru Iz
    Arbori Rosu Negru Iz
    Document55 pagini
    Arbori Rosu Negru Iz
    pisti1989
    Încă nu există evaluări