Documente Academic
Documente Profesional
Documente Cultură
din BACU
FACULTATEA de TIINE
ALGORITMI PARALELI l
DISTRIBUII
Note de curs
COLECIA
TIINE
Gloria Cerasela Crian
Universitatea
.VASILE A L E C S A N D R T
din Bacu
BiDlioteca
Cota
IV
Bacu
2014
CUPRINS
Introducere
1. L i m i t e l e p r o c e s r i i s e c v e n i a l e i n e c e s i t a t e a
7
8
12
16
2. P a r a l e l i s m i m p l i c i t
2.1. Procesare de tip linie de asamblare
2.2. Procesare super-scalar
2.3. Procesare cu spaii mari de memorie
2.4. Folosirea ierarhiilor de memorii cache
2.5. Utilizarea datelor contigue
2.6. Software-ul i paralelismul implicit
19
19
20
22
23
24
25
3. Paralelism explicit
3.1. Controlul n aplicaiile paralele
3.2. Comunicaiile n aplicaiile paralele
27
27
30
4. R e z o l v a r e a u n e i p r o b l e m e p r i n c a l c u l c o n c u r e n t
4.1. Graful de preceden
4.2. Metode de descompunere a rezolvrii unei probleme
43
43
46
5. T e h n i c i e f e c t i v e d e p a r a l e l i z a r e
5.1. Paralelizarea calculului numeric
5.2. Paralelizarea rezolvrii de probleme prin programare
dinamic
5.3. Paralelizarea sortrii i a problemelor conexe
49
49
54
6. P r o b l e m e a c t u a l e a l e c a l c u l u l u i p a r a l e l
6.1. De la TSP la MDPVRPTW
69
69
59
75
7. P r o b l e m e a c t u a l e a l e c a l c u l u l u i d i s t r i b u i t
77
Bibliografic
79
Introducere
Capitolul 1
Limitele procesrii secveniale i necesitatea p r o g r a m r i i
paralele sau distribuite
singur magistral de date ntre memorie i procesor. O alternativ la modelul von Neumann
este modelul Harvard, caracterizat prin tipuri diferite de memorii: unul pentru date (de tip
citire/scriere) i altul pentru program (de tip read-only). Astfel, se pot executa simultan
schimbri in starea programului i citiri/scrieri dc date. Modelul Harvard modificat permite
ca memoria dedicat programului s fie tot de tip read/write. Acest model este utilizat de
diveri productori de procesoare (familia ARM9 este un exemplu) sau este folosit pentru
dispozitive specializate (microcontrolere).
Dezvoltarea tehnologic ulterioar i necesitile tot mai mari de putere de calcul au
evideniat limitele modelului von Neumann. astfel c au aprut diverse metode de cretere a
vitezei de execuie a unui program. Dc exemplu, memoriile intermediare de tip cache ofer
acces mai rapid la datele necesare execuiei unei instruciuni. Posibilitatea accesului rapid la
date i dezvoltrile hardware au dus la realizarea n 2005 a primelor proccsoare dual-cores.
carc sunt de fapt dou procesoare cu aspect fizic unitar, care posed un sistem de memorii
cache. Au urmat apoi proccsoare din ce n ce mai complexe, cu arhitecturi care utilizeaz
ierarhii din ce n ce mai dezvoltate de memorii cache. cum este cel din figura 1.
UiJOWi
lli.MKB)
| llaiUKB)
111 *4M.
KIC
Cot P2
' Fttsl
u (JwerB.
iiii^re
L1C.W6.
Licaere.
Cc< F9>
Cot Psj
Cf5
Coe
FCF*:
Ftrsj
KMS
Cote PSC
l2.2C4e*6.
Cot
f
Figura 1. Arhitectura procesorului 8-cores AMD FX - Bulldozer [18]
FLfeT
j
Vn> 2
Pentru a calcula n mod iterativ valoarea lui Fib(n) se poate folosi urmtoarea metod:
Functionfin)
if(n < 2) return 1
x- 1
y=l
z =2
k =2
while (k < n)
x=y
k =k + I
return z
Aceast metod (iterativ) are avantajul c urmeaz ablonul matematic al construirii
valorilor irului din aproape n aproape. Exist ns o alt metod, mai apropiat dc obiectul
acestui curs. care face trecerea spre abordarea concurcnt a acestei probleme, i anume
metoda recursiv:
Function g(n)
if(n < 2) return 1
return g(n - l)+g(n - 2)
Aceast metod ncccsit cunotine mai avansate dc programare i este mai nceat
(sau produce depiri dc memorie) la execuia n limbajul C, chiar pentru valori comune ale
lui n. Avantajul ei este ns c se auto-apeleaz (pentru n > 2) cu factor dc multiplicare 2.
Aceasta nseamn, de exemplu, c pentru aflarea lui #(8) se lanseaz o copie a sa care
calculeaz g(7) i nc una pentru gsirea lui #(6). Fiecare dintre accstca lanseaz alte dou
execuii, ctc.
n tabelul 1 este prezentat modul n care lucreaz funcia g dac este apelat pentru
valoarea n = 4. Coloanele tabelului arat modul de ncrcare pe stiv a copiilor Iui g, pn
cnd se calculeaz valoarea g(4). Rndurile tabelului arat succcsiunea temporal a cxccuiei
proccdurii g pentru valoarea 4. Apelul 1 este apelul procedurii, care lanseaz imediat pc stiv
apelul 2, adic o copie a codului pentru valoarea n = 3 i apoi intr n ateptare (idle) pn
cnd primete valoarea
3), adic 3. Apelul 2 lanseaz o nou copie a aplicaiei, pentru a
calcula g(2), etc. Starea dc execuie este indicat prin culoarea de fundal gri; starea idle a unui
anumit proces este indicat prin diagonalele trasate. Dc exemplu, apelul 3 ocup timp de 4
uniti dc timp o unitate dc procesare (ncepnd cu momentul 3), din carc jumtate st n
ateptare (este idle). Se observ c pe stiv, pentru n = 4, vor exista cel mult 4 copii n
execuie i c unele copii stau in ateptare destul de mult timp. astfel explicndu-se faptul c
execuia lui g este mai nceat dect cea a l u i / pentru aceeai valoare a lui n.
Apel 1
(main)
realizat de:
Momente de
timp
1
2
3
4
5
6
7
8
9
10
11
Apel 2
Apel 3
Apel 4
Apel 1
Apel 2
Apel 3
8(4)
8(3)
8(2)
X
8(2)-2
10
g(D
return 1
8(1)= 1
8(0)
return 1
8(0)-1
rctum 2
Apel 2
Apel 1
(w ain)
Apel 3
Apel 4
Apel 1
Apel 2
Apel 3
realizat de:
12
B(0
1
return 1
13
14
g(l)=l
rctum 3
15
16
g(3) = 3
17
g<2)
18
8(0
\ /
return 1
19
20
g(D=l
21
g(0)
return 1
22
23
K(0)=1
return 2
24
25
8(2) = 2
return 5
26
Tabelul 1. Evoluia temporal a apelului recuri v g(4)
V/
A
/ \
Trecerea spre execuia pe mai multe fire urmeaz modelul din tabelul 1 i presupune
c sunt disponibile uniti dc procesare astfel nct s poat prelua execuia la nevoie i astfel
firele dc cxccuic s nu atepte mai mult dect este necesar. Pentru lansarea succesiv a
apelurilor se introduc dou funcii specifice calculului concurent, care permit multiplicarea
execuiei i respectiv nchiderea tuturor firelor lansate i continuarea execuiei n clasicul mod
serial. Aceste dou noi comenzi sunt:
spawn - procedur prin care un proces (printe) lanseaz un proces (fiu)
sync - proccdur prin care se atept ncheierea tuturor proceselor lansate in apelul
curent prin spawn i continuarea numai cu procesul printe.
Folosind aceste dou noi comenzi, procedura recursiv concurent pentru calculul
valorii generice din irul lui Fibonacci devine:
Function h(n)
i f f n < 2) return 1
x = spawn h(n- 1)
//dc aici aplicaia arc 1 fir-printe + 1 fir-fiu
y spawn h(n - 2)
//de aici aplicaia are 1 fir-printe + 2 fire-fiu
sync
//aici se ajunge dup ce fii se ncheie
return x + y
n tabelul 2 sunt evideniate apelurile succesive realizate de spawn i sync, pentru
fiecare apel este menionat i apelul su-printe (de exemplu, apelurile 4 i 5 sunt lansate de
apelul 2). Apelul principal h(4) lanseaz iniial n execuie pe alt unitate de procesare
calculul variabilei x ca valoarea ntoars la apelul h(3) i continu execuia lansnd la
momentul imediat urmtor, pe o alt unitate dc procesare, calculul valorii variabilei y ca
valoarea ntoars dc /;(2). Fiecare dintre aceste apeluri ocup apoi alte dou uniti de
procesare. Se observ c la momentul 5 de timp. sunt necesare 9 uniti de procesare, din carc
9
5 lucreaz i 4 sunt n starea idle. Se observ de asemenea c apelul /;(4) necesit 12 uniti
de timp pentru execuie, pe cnd apelul #(4) are nevoie de 26 uniti de timp i de cel mult 4
execuii simultane.
La fel ca n tabelul 1, zonele gri reprezint intervalele de timp n care procesoarele
sunt alocatc, iar zonele care au diagonale sunt intervalele de timp n care procesoarele stau in
ateptare {idle). Observm ins c apelul 1 avanseaz i la momentul 2, cnd realizeaz
lansarea apelului 3, spre deosebire de situaia prezentat n tabelul 1. cnd este deja in
ateptare. i n acest caz se observ un dezechilibru al ncrcrii procesoarelor, dc exemplu
ultimele 5 proccsc lucreaz 2 intervale de timp. pe cnd primul procesor este ocupat toate
cclc 12 intervale de timp.
Apel 1
(main)
fiul lui:
Momc
nte de
timp
1
2
3
4
5
Apel 2
Apel 3
Apel 4
Apel 5
Apel 6
Apel 7
Apel 8
Apel 9
Apel 1
Apel 1
Apel 2
Apel 2
Apel 3
Apel 3
Apel 4
Apel 4
h( 2)
h(2)
h( 1)
return
1
AO)
retum
1
h(0)
h{ 1)
retum
1
h( 4)
/>(3)
XX
X
h( 1)=1
7
8
h( 1)=1
A(0)=1
retum
2
9
10
h( 2 ) - 2
11
12
A(1)=1
retum
1
m
retum
1
h( O M
retum
2
h{iy=2
rctum
3
rctum
5
Tabelul 2. Evoluia temporal a apelului recursiv paralel h(4)
dezvoltarea unui organism, alctuit din organe cu rol specific, care lucreaz
conform scopului lor dar i n corelare cu celelalte organe;
evoluia unui sistem social (sistem complcx, alctuit din indivizi oarecum
asemntori care intcracioneaz, dc exemplu: un stup de albine, un banc de peti,
o turm de animale, populaia unui contincnt, posesorii de conturi Facebook, etc.).
Acest model este preluat n zilele noastre cu succes de reelele de calculatoare sau de
telefonie mobil, dc sistemele intcrconectatc dc calcul care permit tranzaciile online, dar i
12
dc supcrcalculatoarc, carc ofer n mod curcnl acces simultan la mii de procesoare. Calculul
concurent nu este dect modelul actual a ceea ce natura face de milioane de ani: se dezvolt
prin evoluii simultane ale ecosistemelor, populaiilor, evenimentelor geologice, etc.
Tehnologia ne permite ca micarea planetelor, evenimentele climatice, migraiile psrilor,
servirea clienilor la un magazin, conduccrca corporaiilor trans-naionale, tranzaciile
bancare sau vizionarea filmelor s fie acum studiate sau realizate prin sisteme de calcul
paralel sau distribuit. Globalizarea lumii n care trim este posibil i datorit dezvoltrii
calculului concurent.
Odat cu dezvoltarea tehnologic i apariia sistemelor de calcul care pot oferi acces
simultan la mai multe uniti de procesare, cercettorii au realizat diverse clasificri ale
acestor sisteme. Clasificarea urmtoare se refer la funcionalitatea sistemelor dc calcul, deci
la modul n care aplicaia realizeaz prelucrarea datelor.
Clasificarea Flynn (Michacl Flynn. 1966)
Una dintre ccle mai vechi clasificri ale prelucrrilor clectronicc consider numrul de
prelucrri care se pot realiza simultan i de fluxuri de date care se pot proccsa n acelai timp.
Conform acestei clasificri, calculul electronic se poate realiza prin:
Single Jnstruction Singe Data (S/SD) - proccsarc serial, aplicaia avanseaz
instruciune cu instruciune, pe un singur fir de execuie, cu un singur set de date.
Un astfel de exemplu este calculul pe un PC dotat cu un procesor mono-nucleu.
Single Jnstruction Multiple Data (S/MD) - aplicaia avanseaz instruciune cu
instruciune, pe un singur fir de execuie, procesnd simultan mai multe seturi de
date. O astfel dc situaie este ntlnit n cazul procesorului vectorial, care
manevreaz simultan datele, utiliznd un vector dc memorii. Astfel dc procesoare
sunt utilizate cnd exist colecii dc date carc ncccsit acccai prelucrare; dc
exemplu, procesarea grafic pentru jocuri.
Multiple Jnstruction Single Data (MJSD) - aplicaia const din mai multe fire de
cxccuic carc proccscaz acelai set dc date. Accstc arhitecturi nu apar foarte des
n practic, unul dintre cazuri este calculul dc toleran zero la erori, cnd se
prelucreaz pe mai multe fire dc cxccuic acclai set de date, n vederea mascrii
(eliminrii) erorilor.
Multiple Jnstruction, Multiple Data (M/MD) - aplicaia const din mai multe fire
de execuie care proceseaz mai multe seturi de date. n general, un fir de execuie
este alocat unui nucleu. Acest tip dc procesare este realizat de marea majoritate a
supcrcalculatoarclor din Top 500 actual [28]. La rndul lor, procesrile de tip
MIMD pot fi:
O Single Program, Multiple Data (SPMD) - cnd copii ale aplicaiei se
execut pe mai multe seturi de date, fiecare proces avnd evoluie proprie
(deoarece seturile diferite de date conduc la trasee diferite n execuie,
controlate de instruciuni i f , case/switch. while, do-while sau for). Accstca
sunt cel mai des ntlnite situaii, cnd codul unei aplicaii dcscric
procesrile fiecrui fir de execuie,
o Multiple Program. Multiple Data (MPMD) - cnd o aplicaie dc tip mater
lanseaz pe alte uniti de procesare (nuclci - cores) alte aplicaii dc tip
slave.
13
rp)
. .
.,
, atunci acceleraia este n. Din formula acceleraiei sc dcducc deci c o valoare teoretic
maxima a acestei mrimi este //.
Eficiena (jiarallel ejficiency) este o msur derivat din acccicraic, fiind raportul
dintre accasta i numrul de procesoare utilizate:
n
n baza observaiei anterioare, deducem c eficiena unei aplicaii concurente are
ntotdeauna o valoare subunitar, iar eficiena unei aplicaii concurente ideale este 1.
Echilibrul (balance) sc refer la o caracteristic general a cxccuici pe diverse uniti
de procesare (poate fi i timpul necesar execuiei), msurat prin valorile qt 1 <i<n unde n
este numrul nucleilor:
B(n) =
De exemplu, dac ne referim la q t 1 < / <, n ca fiind timpul de execuie pc procesorul
/", atunci echilibrul aplicaici h care lucreaz ca n Tabelul 2 este B(n) =
= 16,7%. in
general, sc urmrete ca aplicaiile concurente s fie cchilibratc, adic B(n) s fie ct mai
aproape de 100%.
14
sunt:
(kilo)
(mega)
(giga)
(tera)
(peta)
(exa)
(zctta)
(yotta)
Procesoarele actuale pot realiza 4 operaii in virgul mobil pe unitate dc ceas (clock
cvcle). Un procesor de 2.5 GHz cu 4 nuclei poate realiza deci
4-4-2,5 GFLOP / s = 40 GFLOP / s.
Dezvoltarea tehnologic a fost surprins n anii '60 de o observaie empiric, al crei
adevr s-a meninut pn acum. Acest enun este cunoscut ca Legea lui Moore (Gordon
Moore, 1965) i trebuie neles ca o constatare empiric observat a Fi adevrat din 1965 i
pn azi:
Performanele procesoarelor (msurate prin numrul de tranzistoare care formeaz
un circuit integrat) se dubleaz la fiecare 2 ani.
Legea lui Amdahl (Gene Amdahl, 1967)
Acceleraia aplicaiilor paralele are o cretere sub-liniar odat cu creterea
numrului de procesoare.
Presupunem o aplicaie concurent oarecare, pentru carc notm T(\) = a + b, unde a
este intervalul de timp ncccsar execuiei prii nc-paralelizabile i b este timpul ncccsar
cxccuici prii paralclizabile pe o singur unitate de procesare. nlocuind aceste valori n
formula acceleraiei, obinem:
v
'
b
a+ n
n ca/ul unui echilibru perfect i dac nu sunt ncccsare alte instruciuni pentru
repartizarea, controlul firelor de execuie, colectarea datelor, ctc.. atunci pe n uniti dc
b
procesare se poate cxccuta accast parte a aplicaici n timpul a + ~ . Trecnd la limit, avem
n
c:
,. c, , a + b
hmS(n) =
m-*m
(j
Cum accast valoare este o constant carc depinde de aplicaia n cauz. nseamn c
exist un prag al numrului dc procesoare ncepnd de la care adugarea de noi procesoare nu
mai determin o mbuntire semnificativ a aecclcraici. Aceast concluzie se menine chiar
n cazul unei aplicaii pcrfcct echilibrate.
15
b-*x
b-*x
b n
Deci dac partea paralelizabil este suficicnt de mare, atunci acceleraia este aproximativ
egal cu numrul de procesoare. Legea lui Gustafson specific o regul simpl: dac vrem s
ne apropiem dc eficiena ideal a unei aplicaii paralele, partea paralelizat trebuie s fie ct
mai consistent.
16
adunarea distribuita eficient accstor valori va ine cont i dc timpul ncccsar comunicaiilor.
O metod eficient (din punctul de vedere al ncrcrii procesoarelor) este prezentat n
tabelul 3. Prima dat se realizeaz 8 transferuri simultane de date ntre vecini, la finalul
crora, de exemplu, procesorul I stocheaz suma valorilor a( I) i a(2). specificat n tabel pe
primul rnd ca 0(1-2). La pasul urmtor lucreaz doar 4 procesoare care trimit valoarea
stocat ctre un procesor aflat la distan 2 (de exemplu, procesorul 3 trimite valoarea 0(3-4)
ctre procesorul I. care dup recepionare va aduna propria valoare stocat i deci va
cunoate valoarea a( I -4).
Dac la pasul 1 se realizeaz 8 transferuri ntre vecini. nseamn c pe reea se vor
nregistra 8 transferuri simultane dc date. Considernd costul comunicrii unei valori intre
dou calculatoare din reea ca fiind numrul de calculatoare prin carc trccc valoarea
transferat, atunci costul realizrii pasului 1 este 8. la fel ca i n etapa a doua. Pasul 3 const
n transferul valorilor stocatc pe calculatoarele 5 i 12. cu cost total 8. iar n ultima etap doar
calculatorul 16 realizeaz o concxiunc dc cost 1 cu sistemul 1. vecinul su, prin circularitatc.
Accast metod ncccsit deci 4 uniti dc timp i are cost 25.
pasul 0
0(1)
(2)
a(3)
pasul 1
a( 1-2)
pasul 2
fld-4)
pasul 3
a{ 1-8)
t
0(3-4)
0(4)
a<5)
a(5-6)
0(5-8)
a( 6)
a( 7)
a( 7-8)
0( 8)
a( 9)
a( 10)
i
a( 9-10)
pasul 4
0(1-16)
a(ll)
a( 12)
a(l1-12)
0(13)
0(14)
0(13-14)
fl(15)
i
0(9-12)
i
i
i
(15-16)
0(13-16)
0(9-16)
0(16)
cost
4*2 = 8
8*1=8
2*4 = 8
1*1 = 1
comunicaii
cost total
25
comunicaii
Tabelul 3. Etapele adunrii distribuite a 16 valori ntr-o reeapeer-to-peer
Aceste consideraii arat c o aplicaie simpl, de adunare a unor valori, poate fi
eficientizat doar dac se cunosc informaii suplimentare legate de configuraia pe care se va
executa i dac programatorul tie care este critcriul de eficientizare urmrit. Unele aplicaii
concurente pot avea acces la un numr practic nelimitat de uniti de procesare, altele pot
utiliza reele de tip broadband, altele manevreaz volume mari de date. care nu pot fi
transmise pe distane mari. n concluzie, nu exist o reet universal pentru scrierea unei
bune aplicaii concurente. Este nevoie de experien i cunotine avansate pentru a realiza
coduri paralele sau distribuite eficiente.
17
Capitolul 2
P a r a l e l i s m implicit
Timpul
1
IF
2
D
IF
3
DF
D
IF
4
E
DF
D
IF
5
WB
E
DF
D
IF
WB
E
WB
DF
E
WB
D
DF
E
WB
IF
D
DF
E
Figura 2. Dezvoltarea temporal pentru o proccsarc ideal dc tip pipeline
WB
19
toate fazele, cte una din primele 5 instruciuni). Aceast situaie nu apare mereu n realitate,
deoarece pot aprea ntrzieri. De exemplu:
dac instruciunea curent arc nevoie de ncrcarea unor date (faza DF) carc la
momentul respectiv sunt actualizate printr-o faz dc WB a unei instruciuni
anterioare. n acest caz ateptarea este obligatorie.
dac instruciunea din care se dorete cxccuia fazei IF face parte dintr-o
instruciune alternativ (if-then-else), dar nc nu s-a produs faza E din aceasta,
deci la momentul respectiv nu se cunoate pe care ramur avanseaz aplicaia. n
acest caz se pot utiliza resurse suplimentare pentru ncrcarea simultan a ambelor
ramuri ale instruciunii i f , iar cnd se cunoate care ramur este cea aleas, se
renun la cealalt. Accast rezolvare se utilizeaz n mod curent, deoarece situaia
apare des n programare - aproximativ 15% din instruciunile unei aplicaii sunt
instruciuni alternative. Sub numele dc descompunere speculativ, aceeai idee
este tratat n subcapitolul 4.2.
Proccsarca dc tip pipeline este numit i procesare scalar, dcoarccc permite
cretcrea vitezei dc procesare liniar cu creterca numrului dc faze din instruciuni diferite
care se pot executa simultan.
Timpul
1
IF
IF
2
D
D
IF
IF
4
DF
DF
D
D
IF
IF
E
E
DF
DF
D
D
IF
IF
WB
WB
E
E
DF
DF
D
D
IF
IF
WB
WB
E
WB
WB
E
WB
DF
E
WB
DF
E
WB
D
DF
E
E
WB
D
DF
WB
DF
E
IF
D
WB
D
DF
E
IF
Figura 3. Dezvoltarea temporal pentru o procesare ideal cu dou fluxuri pipeline
Acest tip de procesare asigur, n cazul ideal, o vitez dubl fa de proccsarca pc un
singur flux pipeline (n exemplul din figura 3 se execut integral 12 instruciuni n 10 uniti
de ceas). Exemplul urmtor arat c modul de programare este esenial pentru viteza efectiv
de execuie [7].
S presupunem c dorim s adunm 4 valori ntregi, stocate fiecare pe 4 octei, n
variabilele a, b, c i d, aflate n memorie nccpnd cu adresa hexazecimal 1000. Prima
20
versiune a codului in limbaj de asamblare realizeaz ((a + />) + (< + </)). Figura 4 arat timpul
necesar acestei versiuni.
Versiunea 1
1
2
3
4
5
6
Timpul
10
IF
IF
D
D
IF
IF
DF
DF
D
D
IF
II
DF
DF
D
IF
DF
WB
Figura 4. Dezvoltarea temporal pentru versiunea 1 cu 2 fluxuri pipeline
D1
10
DF
D
D
IF
IF
DF
E
DF
DF 1 E
1)
DFI
E J
D
1
IF
DF 1 E I WB
Figura 5. Dezvoltarea temporal pentru versiunea 2 cu 2 fluxuri pipeline
21
II
11
WB
Figura 6. Dezvoltarea
3 cu 2 fluxuri pipeline
22
se execut mai devreme, dcoarccc registrul R2 este eliberat la momentul 102 ns. valoarea din
R2 ateapt depunerea valorii variabilei a[2] n Rl i deci instruciunea
add Rl, R2
sc execut n intervalul 304-305 ns. Transferul valorii a[2] + b[2) sc facc n intervalul 305406 ns. n concluzic, execuia repetat a blocului dc 4 instruciuni se face n blocuri de 203
ns, deci timpul total nccesar este de n 203 ns n cazul n care vectorii au cte n componente.
Dintre cele 4 instruciuni necesare aflrii unui element din vectorul-sum. trei (prima,
a doua i a patra) necesit 101 ns pentru execuie i cea de-a treia se execut ntr-o
nanosecund; dc asemenea, primele dou se pot executa concomitent, ns ultimele dou se
cxccut secvcnial dup ce primele dou s-au nchciat.
Dac ns se folosesc memorii cache, care pot stoca integral cei trei vectori i dac
presupunem c lrgimea de band permite transferul datelor ntr-o singur faz, atunci prima
23
dat se aduc toate datele de intrare n cache (100 ns), apoi se calculeaz toate valorile
vectorului c (aproximativ n ns deoarece se pot executa 4 instruciuni in paralel, iar aflarea
unei valori din vectorul c necesit tot 4 instruciuni) i n final toate valorile se trec in RAM
n 100 ns. in accst caz timpul total este dc n + 200 ns. dc aproximativ 200 de ori mai mic
dcct n cazul n carc nu sc utilizeaz memorii cache.
24
11
12
II
12
25
A2
10
11
12
10
11
12
A2
Paralelismul implicit se refer la exploatarea eficient a caracteristicilor harjwareului pe care se executa aplicaiile. Un programator preocupat de calitatea aplicaiei pe care
o proiecteaz i realizeaz nu poate ignora aceste caracteristici.
26
Capitolul 3
Paralelism explicit
Acest capitol este dedicat arhitccturilor cu mai multe uniti de procesare, care permit
specificarea explicit a proceselor care se pot desfura concurent. Spre deosebire de
capitolul anterior (Paralelism implicit), care trateaz cazul unei arhitecturi mono-procesor.
acest capitol descrie facilitile oferite de coleciile de procesoare.
Trecerea de la programarea secvenial la programarea paralel nu este uoar.
Metoda paralelizrii unor aplicaii secveniale deja scrise nu este cea mai eficient. Pot exista
caractcristici ale problemei care nu sunt speculate de aplicaiile secveniale i care scap
ateniei programatorilor i in cazurile paralele. Pe de alt parte, scrierea de la nceput a unor
aplicaii paralele este o activitate dificil, care necesit solide i moderne cunotine de
programare.
paralel. Aceast soluie este general (se poate utiliza pentru o clas larg de aplicaii
paralele), flexibil (se poate echilibra n funcie dc consumul de resurse), dar necesit spaii
suplimentare de memorie, dcoarccc fiecare sistem dc calcul este controlat independent (figura
9). Sistemele bazate pe multiple proccsoare (CPUs) sunt construite pentru a scdea latena:
memoria cache este destinat mririi anselor ca datele neccsarc s fie deja
disponibile, datorit precedentelor transferuri din memoriile externe
procesorului;
unitatea de control (UC) permite predicia ramificrii codului (branch
prediction - codul sc execut n avans, pe ramura cea mai probabil a
structurilor dc decizie, dar exist i instrumente de restaurare i avans pe
celelalte ramuri. n cazul n carc predicia s-a dovedit a fi incorect).
Structurile de decizie pot fi: instruciunea if-then-else, instruciunea
case/switch sau cclc carc realizeaz controlul instruciunilor repetitive (dac sc
reiau sau sc trccc la urmtoarea instruciune).
unitatea de control (UC) pe mii te utilizarea rapid a valorilor calculate recent
(dala fonvarding) prin mecanisme dc urmrire a locului din aplicaie n care
este ncccsar o valoare tocmai calculat i utilizarea acestei valori dei aceasta
nu a fost nc depus n zona de memoria secundar (pe hard-disc).
Orientarea ctre eliminarea latenei face ca sistemele de calcul bazate pe CPU s fie
extrem de eficiente n cazul aplicaiilor secveniale. Industria hardware a urmrit, de la
nceputuri, eficientizarca acestor aplicaii. Doar dup ce s-a pus problema calculului paralel,
au nceput s apar preocupri n eficientizarca hardware pe accast direcie.
O alt soluie (modern) este oferit de accelcratoarclc grafice (arhitectur SI MD Single lnstruction Multiple Data), care rezolv o clas mai restrns de probleme cu un cost
sczut - necesit memorie puin, existnd un singur punct dc control (figura 10). Aplicaiile
care utilizeaz facilitile GPU (Graphics Processing Unit) speculeaz arhitectura lor,
specializat pentru eficientizarca unui mare numr de procese, care manevreaz in acelai fel
seturi diferite de date.
28
Controlul este deci exterior unitilor de procesare, care nu mai ofer facilitile
branch prediction sau data J'orwarding. Unitile aritmetico-logice (UALs) sunt numeroase,
eficiente energetic i permit cxccuic dc tip pipeline. Dei memoria disponibil pentru GPU
inducc o laten mult mai mare dect n cazul unui CPU (lipscsc facilitile descrise n lista
precedent), numrul marc dc operaii care se pot suprapune (arhitectura este putcmic
oriental ctre suprapunerea de tip pi>eline) face ca aproape la fiecare ciclu de ceas sa fie
ncheiat execuia unei instruciuni. Aceste caracteristici fac ca dispozitivele hardware de tip
GPU s poat executa mult mai eficient unele aplicaii paralele dect dispozitivele CPU.
Exemplu dc control la nivel dc instruciune (granularitate mic)
in cazul arhitecturii SIMD (Single lnstruction Multiple Data) se pot executa
concomitent operaii pe fiecare component a unei structuri de date. De exemplu, dac dorim
s adunm doi vectori a i b cu ctc 1000 dc componente i s stocm valorile rezultate ntrun alt vector c, atunci aplicaia secvenial va coninc instruciunile:
for (i - 0; i < 1000; i++)
c[i) - a[il + b[ij;
iar dac dorim folosirea facilitilor SIMD, atunci codul paralel (care aloc o poziie din
vectorul c unui proces i fiecare proces are acces la componentele corespunztoare din cei doi
vectori dc intrare) va coninc instruciunea:
c[currentJ = afeurrent) + b[current];
n primul caz procesorul execut 2000 de atribuiri (sunt necesare 1000 dc atribuiri
pentru contorul / i 1000 de atribuiri pentru elementele vectorului c). n al doilea caz se
execut simultan 1000 dc atribuiri pentru variabila local current i apoi simultan 1000 de
atribuiri pentru calculul valorii corespunztoare din vectorul c.
Situaia sc complic dac exist instruciuni decizionale n codul secvenial. De
exemplu, dac exist instruciunea:
if (x -- 0) z - y; else z = y/x;
0) z - y; elsewhere z - y/x;
nainte dc
where
Dl
x 0
y 7
z
D2
JC 2
y 8
z
D3
* 3
D4
x 0
.V 3
z
y 2
z
29
etapa 1 din
where
Dl
r 0
y 7
z 7
D2
x 2
z
D3
.r 3
.v 3
z
D4
* 0
2
: 2
etapa 2 din
where
Dl
* 0
v 7
I- 1
D2
x 2
v 8
r 4
D3
.r 3
y 3
z 1
D4
x 0
v 2
z 2
30
HCV 2- CNLY
? OR MC
PCRSOtK
f LH VLHlC.t
31
Exclusive Read, Exclusive Write (EREW) - modelul cel mai restrictiv, cnd att
citirilc ct i scrierile se execut sccvcnial; dac la un anumit moment, procesele
ncearc s scrie simultan aceeai zon de memorie, atunci acestea sunt serializate.
La fel se ntmpl i la tentativa de citire simultan. Asigurnd cel mai nalt grad
de securitate a datelor, acest model produec i cea mai marc ntrziere, prin
32
UP
UP
UP
33
Memorie surs
(MS)
Buffer surs
(BS)
mesaj
Buffer destinaie
(BD)
Surs
Memorie destinaie
(MD)
Destinaie
34
O
35
y
2
c.
date
a
1
1
2
3
4
1
2
3
Q. 4
date
a
7
7
7
7
35
date
A
1
av 2
3
c. 4
b
5 | 2
A
Scatter (A. b, 1, grup)
1
'.j
t/j 2
3
CL 4
b
7
3
5
2
date
A
1
S
2
a>
3
a. 4
b
2
9
4
6
A
Gather (b. A, 1. grup)
1
8
2
a>
3
c. 4
2 | 9
4 | 6
b
2
9
4
6
36
date
date
A
1
2
* 3
c. 4
8
0
4
1
1
Figura 20.
2
1
3
0
2
3
0
2
1
0
1
1
1
K
2
V
3
c. 4
7 | 6
3 | 6
de 4 procese
a)
b)
Figura 21. Reea arbore (tree) i arbore masiv (fat tree)
37
<
<
<
a)
Figura 22. Reea plas 2D
a) deschis
t-
b)
b) circular
a)
b)
c)
d)
e)
Figura 24. Hipercuburi in k = O - 4 dimensiuni [7J
38
<D
<D
G>
39
40
41
Capitolul 4
R e z o l v a r e a unei p r o b l e m e prin calcul c o n c u r e n t
Proiectarea unui bun algoritm concurent este dificil, dcoarecc trebuie s rcspcctc
mncipiile generale dc cficicn. carc s i asigure succcsul indiferent dc condiiilc dc
execuie, dar s i in cont de particularitile problemei rezolvate. Principiile generale de
e-'cien sunt prezentate n continuare, exemplificate pentru cteva probleme simple;
rrogramatorul care este pus in situaii efective de rezolvare a unei probleme poate astfel
iplica aceste principii i le poate adapta situaiei sale concrete, in capitolul urmtor sunt
iescrisc cteva probleme reale, care apar des n proiectele software i pentru care principiile
pencralc dc cficicn sunt discutatc.
de procesare, sau se pot executa n orice ordine atunci cnd nu sunt suficiente uniti de
procesare. Graful de preceden are deci n noduri i niciun arc (figura 31).
0
1
o
...
n- 1
P\ calculeaz
cl,c2,...,cll;
~k
Pi calculeaz cn
calculeaz c
,cn
,...,c;
,c
U-lP+l
(4-D-+2
k
k
,...,c.
O
3
As=AlC\A2
A
=A,UA4
A = A5r\A6.
44
Dac exist procesoare disponibile, atunci graful de preceden pentru acest mod de
rezolvare a problemei este prezentat n figura 33 (mulimile As i Ab se pot gsi n paralel).
A,
O-
Aa
Figura 33. Graful de preceden pentru rezolvarea 1
Gradul de concuren este dat de numrul de procese care se pot desfura simultan. n acest
: i z . gradul mediu de concuren este
n rcuie a proceselor este aceeai (n lipsa unor informaii privind durata lor real), atunci
mimul critic n graful de preceden din figura 33 are lungimea 2. Reamintim c drumul
: -;.v ntr-un graf aciclic este lungimea celui mai mare drum care leag dou noduri.
Rezolvarea 2. O rezolvare cu un grad mediu de concuren mai sczut poate construi
mulimea^ astfel:
.
A5 = A}\JA4
.
A6 =
A2r\A5
A =
A]C\A6.
5.
45
n capitolul urmtor vom prezenta o problem pentru care vom analiza din nou efectul
ordinii efecturii unor operaii asociative. Aici am considerat c durata proceselor este
identic; n subcapitolul 5.2 vom vedea care este impactul unor durate diverse asupra
timpului total de execuie al unei aplicaii paralele.
Evaluarea paralelismului
n cazul unei aplicaii paralele, programatorii sunt interesai de optimizarea
urmtoarelor caracteristici:
gradul maxim de concuren, care arat numrul maxim de uniti de procesare
disponibile, fiind deci o valoare limitat de configuraia hardware pe care se
execut aplicaia;
gradul mediu de concuren, care arat ct de paralelizat" este o aplicaie, fiind
o imagine a eficienei algoritmului;
drumul critic al grafului de preceden, care este lungimea maxim a drumurilor n
graf, obinut prin ponderarea nodurilor cu timpii corespunztori de execuie.
Aceast valoare arat timpul total de execuie.
Aceste msuri sunt caracteristice aplicaiilor concurente, adugndu-se msurilor
cantitative generale ale aplicaiilor (complexitate, numr de linii de cod, timp de execuie,
etc.) i celor calitative, specifice Ingineriei software (portabilitate, claritate, mentenabilitate,
etc.). Cele dou probleme concrete prezentate anterior arat cum graful de preceden este un
instrument general, care poate evalua eficiena unei metode concurente de rezolvare.
46
47
Capitolul 5
Tehnici efective de paralelizare
n acest capitol sunt prezentate cteva metode de paralelizare pentru aplicaii des
ntlnite n proiectele software. Am ales dou exemple din calculul numeric i cteva
rrobleme conexe sortrii, pentru a ilustra posibiliti diverse de paralelizare; la fiecare
rroblem am evideniat specificul su, avantajele metodei alese, dar i dezavantajele sale.
Rmne ca programatorul s decid modul efectiv de implementare a paralelizrii, n funcie
de problem, infrastructur i propria experien.
=bx
a2lxl+a22x2+...a2nxn
=b2
a^x+an2x2+...annxn
=bn
Aceast problem este echivalent cu gsirea unui vector x cu n elemente reale care s
satisfac ecuaia matriceal A-x-b,
unde A este matricea coeficienilor i b este vectorul
termenilor liberi ai sistemului considerat.
n acest curs vom considera c sistemul are o soluie unic i c toate operaiile de
mprire descrise n metoda de rezolvare se pot executa (la nevoie ecuaiile se permut).
Metoda lui Gauss a eliminrii succesive const din dou etape:
1. ecuaiile se transform n mod repetat pn cnd sistemul ajunge la forma
triunghiular-superioar
x
+ c x
u2
x =d [
x2 +... c2n Xn d2
xn = dn
49
-9x3
6
12
= -12
Prima etap ncepe prin mprirea coeficienilor primei ecuaii la 2, pentru a se obine
coeficientul lui xj egal cu 1 (.se normalizeaz prima ecuaie):
"i- X2
x] + 4jc, +6a: 3 =
12
- -12
12
2X2 + 4jc3 =
- 9X2 -1 2JC3 = 21
3x. 6X2 - 9 X 3 = - 1 2
x2 + 2x} =
3
3
9x2 - 1 2 X 3 = - 2 1
La pasul urmtor se nmulete aceast ecuaie cu (-9) i se scade din ultima:
Xj I X'y I
X^
2jc3 =
-9x2
x, = 3
x2 + 2;c3 = 3
3|(-9)
-12*3 =21
6X3 = 6
=3
= 1
Cea de-a doua etap ncepe prin atribuirea valorii 1 variabilei xj, conform ultimei
ecuaii. Aceast valoare se introduce n toate celelalte ecuaii, obinndu-se sistemul:
xl+ x2 = 3 1
x2
=3-2-1
x, = 1
x^ "i- X2
x2 = 1
X, = 1
Procedeul se repet pentru sistemul triunghiular alctuit din primele dou ecuaii:
variabila x^ ia valoarea 1, care se nlocuiete n prima ecuaie:
50
-v,
x] = 1
= 2 - 1
x 2 = 1 => - x2 = 1
x3 = 1
ij
= aij
t a
b,=b,/an
II eliminarea variabilei x, din toate rndurile k de dup rndul;':
f o r (k = i + 1; k <= n; k++)
f o r ( j = i ; j <= n; j++)
% =
kj-aki-aij
K =K~aklbi
' arianta secvenial a etapei 2 (rezolvarea efectiv a sistemului):
f o r (i = n; i >= 1; i )
// eliminarea necunoscutei x,
= b,
II nlocuirea valorii gsite n toate rndurile k de deasupra rndul i:
f o r (k = 1; k <= i - 1; k++)
h =hk~
k, 'b,
51
a]2...au
(valoarea aflat n au
2<i<n)
s fie
zero
//iteraia 2: se prelucreaz a doua coloan din matricea extins
//(lucreaz procesele P2- Pn):
transmite)
//aceti pai se repet astfel c la penultima iteraie a etapei 1 lucreaz doar procesele
Pn
procesul
//etapa 2, prima iteraie (lucreaz toate procesele: variabila xn are deci valoarea bn, pe
care procesul Pn o transmite tuturor celorlalte procese; fiecare dintre acestea i
recalculeaz termenul liber corespunztor):
procesul Pn transmite proceselor Pl faptul c variabila xn are valoarea bn
(aceasta este prima necunoscut aflat, sistemul triunghiular rezolvndu-se de jos
n sus")
(la sfritul
fiecare
dintre b,...b
I nZ,
//aceti pai se repet astfel c la penultima iteraie a etapei 2 lucreaz doar procesele
P, i Pi procesul P2 transmite procesului Pt valoarea b2 pentru variabila x2
52
xl...xn.
53
54
(Generalizare)
Se
matrice
dau
A x.-t- x...xAtl.
(Af(rt c,.)),<,.<
se
dorete
obinerea
matricei
produs
S se afle ordinea optim (cu ct mai puine nmuliri) n care ar trebui s fie
nmulite.
Discuie
Evident, pentru a putea nmuli matricele, avem c ; = rM, 1 < i < n.
Dac ne-am propune rezolvarea problemei prin metoda forei brute, ar trebui
inspectate toate posibilitile. A numra soluiile posibile nseamn a numra n cte moduri
se poate realiza nmulirea a n matrice, cu alte cuvinte, n cte moduri putem ordona cele
t - 1 produse. Acest lucru nseamn s alocm fiecrui semn x din A,xA2 x...xAn
cte un
numr din mulimea {l,2,..., l}. Alocarea se poate face n (w-1)! moduri, deci
:omplexitatea problemei crete exponenial n funcie de numrul de matrice. Fora brut este
ieci exclus, rmne s gsim o alt metod care s asigure o rezolvare eficient. Aceast
rezolvare se bazeaz pe programarea
dinamic.
Programarea dinamic este o metod de rezolvare a problemelor complexe prin
descompunerea lor n probleme mai simple, care se rezolv (eventual prin repetarea
rrocedeului) uor i ale cror soluii se folosesc n construirea soluiei problemei iniiale. n
55
unde i<k
< j.
<j .
este deci valoarea dat de cel mai bun" k ales ntre i i j, astfel nct
C(i,k)
+ C(k + \,j)
+ costul ultimului
produs
s fie minim. Ultimul produs se realizeaz ntre dou matrice care au dimensiunile (ri, ck) i
(rM,Cj)
n concluzie, relaia care permite adugarea unui nou produs irului deja realizat de
produse de matrice este:
C(i,j)
rrrk+l-c.),pentrui<j
secvenial
( i = 1;
<= n ;
i++)
(j = 1; j < n ; j++)
f o r ( i = 1 ; i <= n compute
return
C(i,i
j;
i++)
+ j)
C(l,/z)
56
57
Ultima etap const n aflarea valorii C( 1,4), figurat n desen prin linii groase
C(l,4) = min {18.000 + 1 0 40 5 0 , 6 . 0 0 0 + 60.000 + 1 0 30 50,10 20 50 + 48.000}
C(l,4) = min {38.000,81.000, 58.000} = 38.000
Prin marcarea n graf a drumului care conduce la costul optim, aflm c n acest caz
cea mai eficient ordine a efecturii operaiilor este cea natural, de la stnga la dreapta.
Algoritmul
paralel
Paralelizarea algoritmului general (pentru matrice de dimensiune n) se poate realiza
folosind n procese care sincronizeaz la fiecare sfrit al iteraiei conduse de variabila j din
metoda secvenial descris deja.
Figura 37 sugereaz ablonul comunicaiilor pentru cazul general (n procese), care i
de aceast dat sunt colective (all-to-all), deoarece la flecare pas sunt necesare valori din
toate iteraiile precedente. Fiecare proces Pi construiete propria matrice C (care este deci
stocat redundant, dar astfel se scade numrul comunicaiilor), fie calculnd valorile de pe
coloana i, cea care i este alocat, fie primind de la celelalte procese valorile aflate pe
celelalte coloane.
Evoluia metodei paralele poate fi descris ca o und care pornete de pe diagonala
principal i nainteaz pn n colul din dreapta-sus al matricei C. In algoritmul paralel,
secvena repetitiv for_all desemneaz execuii n paralel.
for_all (k = 1; k <= n; k++)
process Pk computes
for (i = 1; i <= n; i++)
// iniializarea elementelor de pe diagonala principal:
C(i,/) = 0
for (j = 1; j < n; j++)
for_all (i 1; i <= n - j; i++)
process Pi+J computes C(i,i + j )
Broadcast {C(i,i + j ) , Pi+J , all)
process Pn writes C(l,w)
Dezvoltarea simultan ca o und a mai multor procese este ntlnit n natur
(valurile, fronturile atmosferice de exemplu) i este preluat n calculul paralel prin algoritmii
sistolici introdui n anii 80 ai secolului trecut [10],
Observaii privind eficiena acestei metode de paralelizare
Graful din figura 37 descrie modul n care se poate descompune algoritmul, alocnd
cte o valoare din matricea C pe fiecare proces. Acest mod de descompunere este extrem de
ineficient, deoarece din cele
58
a[i]
Valorile iniiale:
Pasul 1:
Pasul 2:
8
1
Pasul 3, final:
dist = 1
ct timp dist permite comparare:
o se compar elementele aflate la distana dist
59
Valorile iniiale:
Pasul 1:
3
j
Pasul 2:
Pasul 3, final:
x> _
2
1
V
tu. san: x i . - a t e
l
2
60
61
62
63
Problema sortrii
timp
Fig. 39. Ordonarea valorilor (8 4) folosind un comparator
Reeaua de comparatoare este o structur de astfel de comparatoare conectate.
Evoluia temporal se face de la stnga la dreapta, datele se schimb la fiecare unitate de timp
i dup mai multe astfel de etape se obine sortarea datelor care au intrat n reea.
Dac reeaua reuete sortarea oricrei secvene, atunci este o reea de sortare. Dac
toate comparatoarele lucreaz pe elemente adiacente, atunci reeaua este simpl. In figura 40
este prezentat o reea simpl de sortare pentru 6 elemente, care sorteaz n 6 uniti de timp
valorile [9 8 7 6 5 4 ] ,
64
5-
4 ,
5 1
7 ,
4,
timp
O reea de sortare simpl care permite la intrare o secven de n valori necesit cel
puin C] = ~~
a^,a1,...,an)'),x)
65
-elaie de
Bk
<D
-<2-> c<D
O G
sx JZ
o OJ
...
n- 1
timp
66
timp
Bubble-sort
Reeaua din figura 42 este simpl, optim din punct de vedere al numrului de
comparatoare (15), dar are nevoie de mai mult timp dect sortarea din fig. 40, care este mai
compact. Gradul de paralelizare al sortrii din ultima figur este mai sczut.
O alt idee de paralelizare este gsirea n paralel a optimului (valorii maxime) din
secvena de n elemente, folosind metoda turneului, prezentat deja n acest subcapitol.
Relaia de recuren pentru timpul de sortare n paralel devine astfel:
T(n) = log(/i) + T(n -1)
i cum T(2) = 1, avem c:
T(n) = logO?) + log(/7 - 1 ) + . . . + 1 = log(!) n log()
conform aproximrii Ramanujan [14].
Iat cum, dei procesele sincronizeaz la fiecare trecere la o secven mai scurt
(producnd ntrzieri inerente), paralelizarea produce o scdere semnificativ a timpului de
sortare.
La nevoie, dac problema are restricii semnificative de timp, atunci aceste dou idei
se pot combina. Algoritmul rezultat este mult mai complex, dar asigur un timp de execuie
extrem de sczut.
n acest capitol am prezentat cteva probleme pentru care rezolvrile
fost discutate. Dup cum am vzut, nu exist soluii unice de paralelizare,
avantajele sau dezavantajele sale. Dezvoltrile tehnologice sau noile limbaje
oricnd recomanda noi descompuneri sau noi abloane de comunicaie ntre
67
concurente au
fiecare avnd
concurente pot
procese.
Capitolul 6
Probleme actuale ale calculului paralel
69
supra-polinomial.
cicluri
[12].
[1, 31
Figura 44. O instan TSP cu intervale de date pentru costurile muchiilor [12]
Algoritmul care rezolv aceast problem trebuie s fie capabil s rezolve instana ct
mai aproape de optim, oricare ar fi costurile muchiilor (n intervalele specificate). O instan
are deci o infinitate de realizri efective (scenarii), fiecare furniznd o soluie care poate fi
evaluat.
70
a)
b)
b) Drumul curent
Graful incomplet al unor instane TSP face ca uneori s nu existe soluii, sau costul
acestora s fie mare, fat de situaia n care ar fi fost permise muchii ntre orice dou noduri.
Un exemplu este prezentat n figura 46. Pentru vizitarea localitilor Slnic Moldova i
Agigea, este necesar parcurgerea de dou ori a muchiilor Slnic Moldova - Trgu-Ocna i
Agigea - Constana.
Pentru abordarea acestui caz, noiunea de soluie se va relaxa, astfel c algoritmul de
rezolvare va fi nevoit s lucreze cu un spaiu mult mai mare de soluii posibile. Conceptul de
relaxare este general i se refer la aproximarea unei probleme printr-o problem
asemntoare, care se poate rezolva mai uor. De exemplu, se renun la constrngerea ca
soluiile unei probleme s fie numere ntregi i se rezolv n cazul numerelor reale.
71
72
J~~i J
^
MoUe
V V D ^ r - e s ^
K >, r v >
j , V "} Roiii-itua
1
?SSY
hi
X
H"4
-1 >
C<l L
IM
-!' X ^ iviili*
? V i v n K i j v v j ^ V T *" " V P - C y
V
/-) -
tffefl
u j ) t y "
*f
'
ir
rv\1
romania2950.tsp
Soluia din figura 48 a fost obinut folosind o aplicaie paralel pe 2 procesoare Intel
Xeon la 2,2 GHz i 64 MB RAM (aflat la adresa [24]).
73
f
V
Depot
E >
ET7m>
a)
*
V1
4
1
;
1/
". Depot 'i'-
. .
/ " V
.
\
b)
b) o soluie
VRP este o problem extrem de important prin aplicaiile sale: aproape c nu exist
mrfuri care s nu includ costuri de transport, iar cum resursele neregenerabile (derivaii
petrolului) se mpuineaz, este evident preocuparea specialitilor pentru rezolvarea ct mai
eficient a situaiilor specifice de transport mrfuri. Au aprut versiuni tot mai complexe ale
VRP:
CVRP (Capacitated VRP) - camioanele au capaciti fixate de transport, care nu pot
fi depite la nici un moment; mai exist i versiunea n care aceste capaciti sunt
diferite, sau fiecare camion are compartimente, n care se pot transporta anumite
categorii de produse (de exemplu lichide care trebuie refrigerate, etc.);
VRPTW (VRP with time windows) - clienii au un program fix din zi cnd pot fi
aprovizionai; de exemplu, parcarea camionului n zon poate fi fcut pn la ora 9.
MDVRP (muli depot VRP) - exist mai multe depouri, fiecare camion se ntoarce la
depoul de unde a plecat;
PVRP (periodic VRP) - se consider mai multe zile succesive i fiecare client
specific un ablon propriu de aprovizionare (de exemplu o dat la 3 zile).
Aceste versiuni se pot combina, astfel c exist, de exemplu, MDPVRPTW. Aceast
problem este dificil deoarece orice metod de rezolvare s-ar implementa, se consum
resurse majore pentru verificarea tuturor restriciilor (de capacitate, de interval orar i de
ablon de aprovizionare, de testare a celui mai convenabil depou). De aceea, numai aplicaiile
paralele, cu module complexe de construire i evaluare a soluiilor pot acum s furnizeze
soluii eficiente [2].
74
sunt:
75
qubitul
76
Capitolul 7
Probleme actuale ale calculului distribuit
Calculul distribuit cunoate n zilele noastre o dezvoltare nemaintlnit: reelele de
calculatoare sunt o prezen obinuit n companii, n instituii sau la domiciliu. Suntem
posesori de telefoane inteligente, sau de alte dispozitive electronice (smart TV, router, GPS
pentru autovehicul, etc.) care ne fac viaa mai confortabil, prelundu-ne problemele i
rezolvndu-le.
Modelul distribuit nu este nou: reeaua de cale ferat, de exemplu, manifest
concuren (mai multe trenuri se afl pe acelai tronson), laten (trenurile ntrzie), toleran
la erori (un tren ntrziat nu are impact major asupra celorlalte), partajarea datelor
(evenimentele se anun n reea).
La nivelul reelelor de calcul, programatorii de aplicaii distribuite au tendina de a
ignora unele aspecte care pot influena calitatea produsului software. De exemplu, se
consider n mod eronat c:
reeaua este securizat
latena este zero
costul de transfer este zero
lrgimea de band este infinit
reeaua este omogen
componentele nu se defecteaz
topologia este fix
exist un singur administrator, care are o strategie constant de gestionare.
Toate aceste presupuneri trebuiesc ignorate de un programator bun de aplicaii
distribuite.
Reelele eterogene sunt cele care pun cele mai mari probleme dezvoltatorilor de
aplicaii; eterogenitatea se poate referi la:
arhitectura sistemelor de calcul
formatul local al datelor
ncrcarea local
viteza de calcul
dinamica ncrcrii reelei
i se trateaz diferit, n funcie de situaia la care se refer.
De exemplu, dac sistemele cad i aplicaia nu este proiectat s recupereze datele,
utilizatorul trebuie s o re-lanseze de la nceput; o bun abordare ar fi s se proiecteze puncte
de ntrerupere i salvare, astfel nct s se poat relua fr pierderea rezultatelor intermediare.
In cazul aplicaiilor mobile (apps) se realizeaz versiuni dedicate tuturor sistemelor majore de
operare (cel puin Android, iOs, Windows Mobile OS). In cazul aplicaiilor de cutare, se pot
implementa funcii de interogare a unor baze de date diverse - de exemplu, pentru proiectele
software dedicate cltoriilor de persoane, se pot realiza aplicaii multi-modale pentru
conexiuni avion - cale ferat - autocar.
77
78
Bibliografie
1. Applegate, D.L., Bixby, R.E., Chvatal, V., Cook, W., Espinoza, D.G., Goycoolea, M.,
Helsgaun, K. - Certification of an optimal TSP tour through 85,900 cities, Operations
Research Letters, 37, 1, 11-15, 2009
2. Crainic, T.G., Crian, G.C., Gendreau, M., Lahrichi, N., Rei, W. - Multi-thread
Cooperative Optimization for Rich Combinatorial Problems, IEEE International
Parai lei & Distributed Processing Symposium, Rome, Italy, 2284-2291, 2009
3. Crian G.C., Nechita E., Talmaciu M., Ptru B. - Using Centrality Indices in Ant
Systems, Proceedings of the International Conference on Computers, Communication
and Control ICCC2006, Oradea, 146-149, 2006
4. Dantzig, G.B., Ramser, J.H. - The Truck Dispatching Problem, Management
Science, 6, 1, 80-91, 1959
5. Dumitrescu B.A. - Algoritmi de calcul paralel, note de curs, Universitatea Politehnica
Bucureti, 2001
6. Euler, L. - Solution d'une question curieuse qui ne parat soumise aucune analyse,
Memoire de 1'Academie des Sciences de Berlin 15, 310-337, 1759, publicat n
Opera Omnia 1, 7, 26-56, 1766
7. Grama, A. Gupta, A., Karypis, G., Kumar, V. - Introduction to parallel computing,
Addison-Wesley; 2nd Ed., 2003
8. Jaillet, P. - Probabilistic Traveling Salesman Problem, Tez de Doctorat, MIT,
Cambridge, 1985
9. Knuth, D.E. - The Art of Computer Programming, Volume 3: Sorting and Searching.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
2 n d Ed., 1998
Kung, H.T., Leiserson C.E. - Algorithms for VLSI processor arrays - Introduction to
VLSI systems, Addison-Wesley, 271-292, 1980
Mayer-Schonberger, V., Cukier, K. - Big Data: A Revolution That Will Transform
How We Live, Work, and Think, Eamon Dolan/Houghton Mifflin Harcourt, 2013
Montemanni, R., Barta, J., Mastrolilli, M., Gambardella, L.M. - The Robust Traveling
Salesman Problem with Interval Data, Transportation Science, 41, 3, 366-381, 2007
von Neumann, J. - First Draft of a Report on the EDVA, Pennsylvania University,
USA, 1945
Ramanujan, S. - The lost notebook and other unpublished papers, Springer Berlin,
1988
Stolze J., Suter, D. - Quantum Computing. Wiley-VCH, 2004
Tikhonova, A., Tanase, G., Tkachyshyn, O., Amato, N., Rauchwerger, L. - Parallel
Algorithms in STAPL: Sorting and the Selection Problem, Technical Report, TR05005, Parasol Laboratory, Department of Computer Science, Texas A&M University,
2005
Vazirani, V.V. - Approximation Algorithms. Berlin: Springer, 2003
http://en.wikipedia.0rg/wiki/File:Hwl0c.png#file
http://txemainlogisticsworld.wordpress.com
http://web.ornl.gov/sci/techresources/Human_Genome/index.shtml
http://www.gbbopen.org/
http://www.i-cherubini.it/mauro/blog/page/15/
http://www.lam-mpi.org
; Inv
79
j VASILE A L E C S A N D R I
din D a c u
Bibliotec
j Cot
fi/
%cH
24.
25.
26.
27.
28.
29.
http://www.math.uwaterloo.ca/tsp/concorde/index.html
http://www.mpich.org
http://www.open-mpi.org
http://www.parallella.org
http://www.top500.org
http://www.treehugger.eom/cars/california-to-extend-carpool-lane-access-to-40000plug-in-hybrids.html
30. https://bitcoinfoundation.org
31. https://code.google.eom/p/blackboardeventprocessor/
32. https://computing.llnl.gov/tutorials/mpi/
80