Documente Academic
Documente Profesional
Documente Cultură
p
paraleli
Ciprian Dobre
ciprian dobre@cs pub ro
ciprian.dobre@cs.pub.ro
Timp de execuie
Memorie ocupat
N d
Nr.
de procesoare
Scalabilitate
Eficien
Fiabilitate
Toleran la defecte
Portabilitate
Costuri
intrare
ieire
Fi
Fiecare procesor are o memorie
i llocal
l ii propriul
i l su
program
Funcionare sistolic
Un ceas global comand execuia simultan a operaiilor
Fiecare procesor realizeaz la fiecare pas:
Recepia
R
i unor date
d t de
d la
l vecini
i i
Inspecia memoriei locale
Execuia
calculelor specificate
p
de program
p g
Modificarea memoriei locale
Transmiterea unor date ctre vecini
intrare
ieire
Vector de N procesoare
2 faze
n
fiecare pas al primei faze, fiecare procesor realizeaz
urmtoarele operaii:
1) accept o valoare de la vecinul din stnga;
2) compar valoarea cu cea memorat local;
p ;
3)) transmite valoarea mai mare vecinului din dreapta;
4) memoreaz local valoarea mai mic.
iniial
3 0 5 12
3 0 51
pasul 1
pasul 2
2
comparatie
305
pasul 3
comparatie
30
1
comparatie
2
comparatie
pasul 4
Dup pasul 9:
0
Faza a doua
Variante:
1. fiecare procesor ncepe s transmit spre stnga, imediat ce numerele
sunt sortate;
2. cunoscnd poziia sa din vector i numrnd valorile inspectate,
fiecare procesor calculeaz momentul cnd ncepe s transmit spre
stnga;
3 procesorull di
3.
din d
dreapta
t ncepe s
ttransmit
it spre stnga
t
imediat
i di t ce
primete o valoare; toate celelalte ncep s transmit spre stnga
imediat ce primesc o valoare din dreapta;
4. fiecare procesor ncepe s transmit spre stnga imediat ce nu mai
primete o valoare dinspre stnga.
Complexitate:
e oda 3 => 4N-3
3 pas
pasi
metoda
metoda 4 => 3N-1 pasi
Msuri de performan
Msuri de performan
Acceleraia liniar
Exemplu ???
S = O(P)
S <= P
T >= f * G
Costul C = T*P
n exemplu - C = O(N2)
Caracterizeaz ineficiena datorat nefolosirii complete a
procesoarelor
Eficiena E = G/C
E = G/C = G/(TP) = S/P
n exemplu - E = O((log N)/N)
Scalabilitatea
msur a accelerrii date de adugarea mai multor
procesoare
P
Paralelizarea
l li
se fface pentru
t atingerea
ti
unuii
timp de execuie ct mai redus
Cum putem ti dac un algoritm paralel este
optim sau nu?
Rspunsul depinde de modelul de
evaluare adoptat
n algoritmul anterior pasul algoritmului
reprezenta o operaie asupra unor cuvinte
msb 0 0
pas 1
=
0 0
1 0
lsb 0 1
s d
pas 2
pas 3
=
s
s
pas 2
pas 3
s
s
s
s
1 0
lsb 0 1
s d
comparaia
i tterminat
i t iin 2*l
2*log k paii
2k-1 procesoare
I i
Ieire
Reea de (2k-1)*N
(2k 1) N procesoare
Test: Ci pai sunt necesari n aceast abordare pentru
faza 1?
(2N-1)*2*logK pai pt. faza 1
Abordare pipeline
Algoritm mai bun de comparare
Tablou liniar de k procesoare pe bit
n timp ce un procesor compar o pereche de bii a dou numere
succesive, procesorul de sub el lucreaz cu biii mai puin
semnificativi ai perechii de numere anterioare
La fiecare p
pas,, un procesor
p
p
primete
la intrare un bit,, iar de la
procesorul de deasupra o informaie
f
asupra comparaiei fcute
f
de
el la pasul anterior:
s dac numrul de la intrare este mai mare
d dac numrul memorat este mai mare
= - dac cele dou numere sunt egale
Dac primete s, procesorul transmite bitul de la intrare la ieire
i transmite s n jos
Dac primete d, procesorul transmite bitul memorat la ieire i
transmite d n jos
Dac primete =, transmite bitul mai mare la ieire, memoreaz
bitul mai mic i transmite n jos s, d, sau = n mod corespunztor
Abordare pipeline
3 0 5 1 2
<- iniial
-------------------------------------------------------------------------------------------------------------------------
0 0 1 0 0 [ ]
/ / / / /
1 0 0 0 1
[ ]
/ / / / /
1 0 1 1 0
[ ]
iniial
<-msb
0 [0] -> 0 1 0
=
/
1 0 [0] -> 0 1
/
s
/
1 0 1 [1] -> 0
dup pasul 4
/
<-lsb
--------------------------------------------------------------------------------------------------------------------------
0 0 1 0 [0]
/ / / /
1 0 0 0 1 [ ]
/ / / /
1 0 1 1 0
[ ]
dup pasul 1
[0] -> 0 0 1 0
=
/ /
1 [0] -> 0 0 1
=
/ /
1 0 [1] -> 1 0
dup pasul 5
Complexitate:
(k-1)+(2N-1) pai faza 1
-------------------------------------------------------------------------------------------------------------------------
0 0 1 [0] -> 0
/ / /
=
1 0 0 0 [1]
/ / /
1 0 1 1 0 [ ]
dup pasul 2
[0] ->
0 0 1 0
/ / /
[0] -> 1 0 0 1
s
/ / /
1 [0] -> 1 1 0
dup pasul 6
-------------------------------------------------------------------------------------------------------------------------
0 0 [0] -> 1 0
/ /
s
1 0 0 [0] -> 1
/ /
d
1 0 1 1 [0]
dup pasul 3
[0] ->
0 0 1 0
/ / / /
[0] ->
1 0 0 1
/ / / /
[0] -> 1 1 1 0
dup pasul 7
-------------------------------------------------------------------------------------------------------------------------
rezultat ->
3 1 5 2
Limite inferioare
n dou
d
subreele separate, avnd acelai numr de noduri
interschimbarea datelor
ex: k*N/2 bii "trec" prin bisecia de lrgime k n minim N/2
pai
0
0
0
1
1
0
1
0
1
5
1
0
0
1
9
1
1
1
0
14
procesoare
frunza cu
cte K
celule
Modele generale
M d ld
Model
de graff ((work
kd
depth)
th)
fiecare intrare este reprezentat ca un nod fr arce de intrare
fiecare operaie
p este reprezentat
p
ca un nod ale crui arce de
intrare provin de la nodurile care reprezint operanzii
o ieire este reprezentat ca un nod fr arce de ieire.
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
+
+
+
+
+
+
+
Pune n eviden:
lucrul efectuat de algoritm (numrul total de operaii)
adncimea (lungimea celui mai lung lan de
dependene secveniale din algoritm).
paralelismul algoritmului
=> lucru / adncime
nsumarea a n numere
lucrul = n
n-1
1
adncimea = log n
Calculul complexitii
var a, b: array [1:n] of real;/* pp n = 2k */
var
ar s: real;
l
fa i := 1 to n do in parallel b[i] := a[i] af;
fa h :=
: 1 to log n do
fa i := 1 to n/2h do in parallel
b[i] := b[2*i-1] + b[2*i]
af
af;
s := b[1];
T(n)) = 1 + log
T(
l n + 1 = O(l
O(log n))
W(n) = n + h = 1, log n n/2h + 1 = O(n)
Justificare
Fie Wi(n) numrul de operaii executate n unitatea i de timp.
Pentru
P t fiecare
fi
i 1 <= i <= T(
i,
T(n),
) Wi(n)
( ) operaii
ii se execut
t n Wi(n)/p
( )/
pai paraleli, pe cele p procesoare.
numrul de pai paraleli:
i sup(Wi(n)/p) <= i (inf(Wi(n)/p) + 1) <= inf(W(n)/p) + T(n)
Exemplu
algoritm de nsumare executat de p procesoare PRAM
p = 2q <= n = 2k
P < n (dimensiunea
(di
i
problemei),
bl
i) P adaptiv
d ti
(dependent de dimensiunea problemei)
Ex: P(n) funcie subliniar de n rdcina
ptrat de n
Tp(n) mic, adaptiv, invers proporional cu P
C minim
P110
P111
P010
P100
P110
P000
P001
/* n = 2d */
Sumar
Complexitatea
C
l it t algoritmilor
l it il paraleli
l li
Msuri de performan
Calculul detaliat al complexitii
Limite inferioare
ntrebri?