Documente Academic
Documente Profesional
Documente Cultură
i Calculatoare
! Caracteristici:
- citirea !i scrierea explicitate separat in algoritmi - se descriu ac"iunile executate de procesoare (implicit de procese) - lansarea !i terminarea proceselor au "overhead" redus - algoritmii se ncadreaz, de obicei, n clasa "fine grain".
10/26/13
C"utarea paralel"
! Problema:
c#utare a unei valori x ntr-o secven"# ordonat# S de n valori
! Presupunere: elementele secven"ei sunt toate distincte ntre ele: s[1] < s[2] < ... < s[n].
(Solutia 1) Sistem EREW cu N procesoare, 1<=N<=n. - broadcast x are complexitatea O(log N). - secven"a S este divizat# n N subsecven"e de lungime n/N - un procesor g#se!te rezultatul n O(log(n/N)) n cazul cel mai defavorabil. ! Timpul total cerut este: O(log N) + O(log(n/N)) = O(log n) = timpul necesar c#ut#rii binare secven"iale.
10/26/13
3.! se determina sub-sirul in care se situeaza x 4.! se reia de la 1 pentru noul sir ! Deoarece fiecare etap# se aplic# unei secven"e de dimensiune 1/(N +1) din secven"a precedent#, sunt necesare O(logN+1(n+1)) etape.
10/26/13
Justificare
P1 P2 PN +---------+ | | | | | | n u= N +---------+ P1 P2 PN +---------+ +-++---------+ +-++---------+ +-++---------+ | | | | | | | || | | | | | | || | | | | | | || | | | | | +---------+ +-++---------+ +-++---------+ +-++---------+ |<--N+1 ---->| |<-----------------------(N+1)(N+1) - 1 ---------------------->|
n ultimul pas N procesoare acoper# N elemente n pasul anterior (N+1)2 1 n g pa!i (N+1)g 1 din (N+1)g 1 >= n (n = nr elemente !ir) rezult# g = sup(log(n+1)/log(N+1)) dimensiune sub-interval (N+1)g-1-1
10/26/13
Exemplul 1
P1 P2 P3 +--------------------------------------------+ | 1| 4| 6| 9|10|11|13|14|15|18|20|25|32|45|51| +--------------------------------------------+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 x=45, N=3, n=15 din (N+1)g -1>= n ! 4g >= 15+1 rezult# g=2. Lungimea unei subsecven"e n primul pas este (N+1)g-1 -1 = 3. Pasul 2 P1 P2 P3 +--------+ |32|45|51| +--------+ 13 14 15
10/26/13
(a)
(b)
Exemplul 2
P2 (n afara sirului) +--------------------------------------------+ | 1| 4| 6| 9|10|11|13|14|15|18|20|25|32|45|51| (a) +--------------------------------------------+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P1
N=2, x=21. Din (N+1)g -1 >= n ! 3g >= 16 rezult# g=3 Lungimea unei subsecven"e n primul pas este (N+1)g-1 -1 = 8.
Pas 2 P1 P2 +-----------------+ |18|20|25|32|45|51| +-----------------+ 10 11 12 13 14 15 P1 P2 +-----+ |18|20| +-----+ 10 11
Algoritmi Paraleli si distribuiti
(b)
Pas 3
(c)
10/26/13
Algoritm
/1/ /* Initializarea indicilor secventei de cautat */ var q:int := 1; /* limita stg interval crt */ var r:int := n; /* limita dr interval crt */ /2/ /* Initializarea rezultatului k si a numarului de pasi g */
var k:int := 0;
/* pozitia nr cautat */
var g:int := sup(log(n+1)/log(N+1)) var c: array [0:N+1] of (stg,dr); c[0] := dr; c[N+1] := stg; var j: array [1:N] of integer;
10/26/13
Pi Pi+1 PN V V +-----------------------------------------------------------------+ | | | | |! | | | | |! | | | | | |! | | | | |! | | | | | | | |! | | | | | S +-----------------------------------------------------------------+ 1=q ^ ^ n=r indici elemente ..... i(N+1)g-1 (i+1)(N+1)g-1 ....
P1
P2
dimensiune subinterval
(N+1)g-1-1
10/26/13
/3/ do (q<=r) and (k=0) -> fa i := 1 to N do in parallel ji := (q-1) + i*(N+1)g-1 /* Pi compara x cu s[ji] si determina partea de secv acceptata */ if ji <= r -> if s[ji]=x -> k := ji [] s[ji]>x -> c[i] := stg [] s[ji]<x -> c[i] := dr fi; [] ji > r -> ji := r+1; c[i] := stg; fi; /* calculeaza indicii subsecventei urmatoare */ if c[i] <> c[i-1] -> q := ji-1 + 1; r := ji - 1; fi; if (i=N) and (c[i]<>c[i+1]) -> q := ji+1 fi; af; g := g-1; od; P1 P2 Pi V
ji
9
Observa#ii
! complexitatea t(n) = O(logN+1(n+1)) ! lucrul O(N logN+1(n+1)) ! Nota
! algoritmul cere ca toate elementele secven"ei S s# fie distincte
10/26/13
10
Timp de execu#ie - t(n) mic - semnificativ mai mic dacat al variantei secven#iale - t(n) adaptiv - invers proportional cu p(n) Cost - c(n) sa fie minim, deci algoritmul sa fie cost-optimal
10/26/13
11
Exemplu
Algoritmul de selec#ie a unei valori din secventa S = {s1, ..., sn} se execut# pe o ma!in# EREW SM SIMD cu N procesoare, unde N<n. (i) num#rul de procesoare p(n) este subliniar !i adaptiv:
! Algoritmul folose!te p(n) = n1-x procesoare, ! cu 0<x<1rezultat din N = n1-x.
(ii) timpul de execu"ie este mai scurt dect cel al unui algoritm secven"ial:
! t(n) = O(nx). ! algoritmul este adaptiv: p(n) cre!te => t(n) scade.
10/26/13
12