Date post: | 04-Jan-2016 |
Category: |
Documents |
Upload: | keefe-levine |
View: | 54 times |
Download: | 1 times |
1. NOŢIUNI INTRODUCTIVE DESPRE CALCULATOARELE PARALELE
• 1.1 MASINI PARALELE SI MODELE DE PROGRAMARE
• 1.2 CLASIFICAREA CALCULATOARELOR PARALELE
• 1.3 TIPURI DE CALCULATOARE PARALELE
• 1.4 PERFORMANŢE ALE CALCULATOARELOR PARALELE
• 1.5 PROGRAME PARALELE
1.1 MASINI PARALELE SI MODELE DE PROGRAMARE
Calculator paralel = colectie de elemente de prelucrare care comunica si coopereaza pentru rezolvarea rapida a unor probleme complexe.
Comunicatie si cooperare: esentiale intr-o arhitectura paralela!=> arhitectura comunicatiei
Cadrul de organizare intr-o masina paralela:
O arhitectura paralela generala:
Exemplu de aplicatie paralela: calcularea sumei
Solutia generala: n/p taskuri p procesoare (procese).
Se disting doua seturi de date:-partajate: valorile A[i] si suma finala;-private: evalurile individuale de functii si sumele partiale
1
0])[(
n
iiAf
1) Modelul 1 de programare: spatiu partajat de adrese.
Programul = colectie de fire de executie, fiecare avand un set de variabile private, iar impreuna partajeaza un alt set de variabile.
Comunicatia dintre firele de executie: prin citirea/scrierea variabilelor partajate.
Coordonarea firelor de executie prin operatii de sincronizare: indicatori (flags), zavoare (locks), semafoare.
Masina paralela corespunzatoare modelului 1: masina cu memorie partajata (sistemele multiprocesor, in primul rand sistemele multiprocesor simetrice sau SMP-Symmetric Multiprocessors).
Exemple: sisteme de la Sun, DEC, Intel (Millennium), SGI Origin.
Variante ale acestui model:
a) masina cu memorie partajata distribuita (logic partajata, dar fizic distribuita. Exemplu: SGI Origin (scalabila la cateva sute de procesoare).
b) masina cu spatiu partajat de adrese (memoriile cache inlocuite cu memorii locale). Exemplu: Cray T3E.
O posibila solutie pentru rezolvarea problemei:
Este necesara sincronizarea threadurilor pentru accesul la variabilele partajate !
Exemplu: prin excludere mutuala, folosind operatia de zavorare (lock):
2) Modelul 2 de programare: transfer de mesaje.
Programul = colectie de procese, fiecare cu thread de control si spatiu local de adrese, variabile locale, variabile statice, blocuri comune.
Comunicatia dintre procese: prin transfer explicit de date (perechi de operatii corespunzatoare send si receive la procesele sursa si respectiv destinatie). Datele partajate din punct de vedere logic sunt partitionate intre toate procesele.
=> asemanare cu programarea distribuita!
Exista biblioteci standard (exemplu: MPI si PVM).
Masina corespunzatoare modelului 2 este multicalculatorul (sistem cu memorie distribuita):
Exemple: Cray T3E (poate fi incadrat si in aceasta categorie), IBM SP2, NOW, Millenium.
O posibila solutie a problemei in cadrul modelului in transfer de mesaje (simplificand, se calculeaza suma s = f(A[1]) + f(A[2]) ):
sau:
Procesor 1 Procesor 2xlocal = f(A[1]) xlocal = f(A[2])send xlocal, proc2 send xlocal, proc1receive xremote, proc2 receive xremote, proc1s = xlocal + xremote s = xlocal + xremote
Procesor 1 Procesor 2xlocal = f(A[1]) xlocal = f(A[2])send xlocal, proc2 receive xremote, proc1receive xremote, proc2 send xlocal, proc1s = xlocal + xremote s = xlocal + xremote
3) Modelul 3 de programare: paralelism al datelor.
Thread singular secvential de control controleaza un set de operatii paralele aplicate intregii structuri de date, sau numai unui singur subset.
Comunicatia: implicita, in modul de deplasare a datelor.
Eficienta numai pentru anumite probleme (exemplu: prelucrari de tablouri)!
Masina corespunzatoare modelului 3: sistem SIMD - Single Instruction Multiple Data (numar mare de procesoare elementare comandate de un singur procesor de control, executand aceeasi instructiune, posibil anumite procesoare inactive la anumite momente de timp - la executia anumitor instructiuni).
Exemple: CM2, MASPAR, sistemele sistolice VLSI
Varianta: masina vectoriala (un singur procesor cu unitati functionale multiple, toate efectuand aceeasi operatie in acelasi moment de timp).
4) Modelul 4 de masina: cluster de SMP-uri sau CLUMP (mai multe SMP-uri conectate intr-o retea).
Fiecare SMP: sistem cu memorie partajata!
Comunicatia intre SMP-uri: prin transfer de mesaje.
Exemple: Millennium, IBM SPx, ASCI Red (Intel).
Model de programare: se utilizeaza transferul de mesaje, chiar in interiorul SMP-urilor!
1.2 CLASIFICAREA CALCULATOARELOR PARALELE
-SIMD (Single Instruction Multiple Data):-Procesoare matriciale;-Procesoare vectoriale;-Procesoare sistolice VLSI.
-MIMD (Multiple Instruction Multiple Data):-Multiprocesoare (MIMD cu memorie partajată):
-UMA (Uniform Memory Access):-UMA cu magistrale;-UMA cu comutatoare.
-NUMA (Non-Uniform Memory Access):-CC-NUMA (Cache Coherent NUMA);-NC-NUMA (Non Coherent NUMA).
-COMA (Cache Only Memory Access).-Multicalculatoare (MIMD cu transfer de mesaje):
-MPP (Massively Parallel Processors):-MPP cu grilă;-MPP hipercub.
-COW (Cluster Of Workstations).
1.3 TIPURI DE CALCULATOARE PARALELE
• Calculatoare în bandă de asamblare
• Calculatoare de masive
• Sisteme multiprocesor
• Calculatoare în flux de date
• Sisteme sistolice VLSI
Calculatoare în bandă de asamblare
Execuţia instrucţiunilor într-un calculator secveţial.
Procesor în bandă de asamblare
Execuţia instrucţiunilor într-un calculator în bandă de asamblare.
Structura funcţională a unui calculator în bandă de asamblare.
Calculatoare de masive
Structura funcţională a unui calculator de masive.
Sisteme multiprocesor
Structura funcţională a unui sistem multiprocesor.
Calculatoare în flux de date
Exemplu: se consideră calcularea expresiei: z = ( x + y ) * 2
. Graful şi şabloanele în flux de date.
Mecanismul de execuţie al unui program în flux de date.
Sisteme sistolice VLSI
Exemplu: se consideră un sistem simplu pentru calcularea convoluţiilor, utilizând o reţea liniară de elemente de prelucrare:
y(i) = w1*x(i)+ w2*x(i+1)+w3*x(i+2)+w4*x(i+3)
Reţea liniară pentru calcularea convoluţiilor.
1.4 PERFORMANŢE ALE CALCULATOARELOR PARALELE
• Masuratori de performanta
• Factorul câştig de viteză
• Principiul mediei armonice ponderate
• Legea lui Amdahl
• Limitări ale calculului paralel
Masuratori de performanta
Gradul de paralelism DOP („degree of parallelism”) = numarul de procesoare dintr-un calculator paralel utilizate pe un anumit interval de timp.
Profilul paralelismului = graficul DOP in functie de timp (pentru un anumit program). Depinde de:
-structura algoritmului;-optimizarea programului;-utilizarea resurselor;-conditiile de rulare.
Se considera un sistem paralel cu n procesoare identice.
Paralelism mediu Notatii:
∆ = capacitatea de calcul pentru un procesor, aproximat cu rata MIPS (million instructions per second):
666 101010
C
If
CPI
f
T
IRata CC
MIPS
undeIC : numar instructiuni pentru program („instruction count”);
T : timp de executie pentru program in secunde;f : frecventa ceasului in Hz, egala cu 1/τ (τ perioada ceasului in secunde);CPI : cicluri per instructiune (perioade de ceas necesare pentru executia unei
instructiuni);C : numar de cicluri necesare pentru executia unui program.
Au fost utilizate relatiile:
CI
CCPI f
CPIICPII
f
CCT CC
Aproximarea ∆ cu rata MIPS sau rata Mflops nu tine seama de penalizarile datorate accesului la memorie, latenta comunicatiei, overhead-ul sistemului.
Volumul de lucru W („work”) este proportional cu aria de sub graficul profilului:
2
1
)(t
t
dttDOPW
iar in cazul discret:
n
iitiW
1
unde ti = timpul total cat DOP = i, iar
n
ii ttt
112
(timpul total scurs).
Paralelismul mediu A („average paralellism”):
2
1
)(1
12
t
t
dttDOPtt
A
n
ii
n
ii ttiA
11
/
Factorul câştig de viteză
Definitie. Factorul câştig de viteză sau accelerare notat S (“speedup”) pentru un calculator paralel este raportul dntre timpii necesari pentru rezolvarea aceleiaşi probleme pe un sistem monoprocesor şi respectiv pe sistemul paralel.
log2n < S < n/ln n
log2n supoziţia lui Minsky.
Limita superioară n/ln n :-o problemă se rezolva pe un monoprocesor în unitatea de timp, T1=1;
- fi probabilitatea de a asigna aceeaşi problemă la i procesoare, cu o încărcare medie
di=1/i per procesor;
-se presupun probabilităţi egale pentru fiecare mod de operare utilizând i procesoare, (fi=1/n pentru n moduri de operare, i=1,2,3,…,n);
-timpul mediu necesar pentru rezolvarea problemei pe un sistem cu n procesoare :
n
i
n
iiin n
idfT
1
1
1
-câştigul mediu de viteză S :
n
n
i
n
T
TS n
i
n ln1
1
1
-volumul de lucru cu DOP =i:
ii tiW
n
iiWW
1
-timpul de executie al volumului Wi pe un uniprocesor:
i
i
Wt )1(
- timpul de executie al volumului Wi pe k procesoare:
ikk
Wkt i
i
)(
-intr-un sistem cu numar infinit de procesoare:
nii
Wt i
i
1)(
-timpul de raspuns:
n
i
n
i
ii
WtT
1 1
)1()1(
n
i
n
i
ii i
WtT
1 1
)()(
=> factorul asimptotic de accelerare S∞ :
n
ii
n
ii
n
i
i
n
ii
n
i
i
n
ii
t
ti
iti
ti
iW
W
T
TS
1
1
1
1
1
1
)(
)1(
Performanta medie aritmetica
-se noteaza cu Ri ratele de executie ale programelor i = 1, 2, 3, ... , n. Rata
medie aritmetica de executie:
n
RR
n
ii
a
1
(s-a presupus ponderea 1/n pentru fiecare din cele n programe).
-daca programele au ponderi cu o distributie oarecare π = { fi | i = 1, 2, ..., n}:
i
n
iia RfR
1
*
Performanta medie geometrica
-rata de executie medie geometrica:
n
i
nig RR
1
/1
-iar pentru o distributie a ponderilor π = { fi | i = 1, 2, ..., n}:
n
i
fig
iRR1
*
Rata de executie medie armonica
-timpul mediu de executie per instructiune pentru programul i:
ii R
T1
-timpul mediu (aritmetic) de executie per instructiune:
n
i
n
i iia Rn
Tn
T1 1
111
=> rata de executie medie armonica este inversul timpului mediu:
n
i i
h
R
nR
1
1
=> rata de executie medie armonica ponderata pentru o distributie oarecare de ponderi π = { fi | i = 1, 2, ..., n}:
n
i i
ih
Rf
R
1
* 1
Principiul mediei armonice ponderate Fie Tn timpul necesar execuţiei a m taskuri de n tipuri diferite, fiecare tip constând din
mi taskuri, necesitând ti secunde:
ii f
m
m
n
ii
in
iii
nh
tmm
tm
m
T
mR
11
* 1
n
iimm
1
n
iiin tmT
1
Rata de execuţie R (numărul de evenimente sau operaţii în unitatea de timp):
Se definesc fi ca fracţia de rezultate generate la rata Ri şi ti=1/Ri ca timpul necesar
pentru generarea unui rezultat
ii
ii
ii t
Rfm
mf
1;1;
Rata globala a masinii:
n
i i
in
iii
h
Rf
tfR
11
* 11
Factorul de accelerare medie armonica
Se presupune executia unui program (sau o incarcare cu mai multe programe) pe un sistem cu n procesoare. In diferite intervale de timp sistemul poate utiliza i=1, 2, ..., n procesoare (modul i cu i procesoare). -timpul secvential pe un uniprocesor cu R1 = 1:
11
11
RT
-timpul de executie cu i procesoare cu Ri = i, in cazul ideal:
iRT
ii
11
Programul este executat in n moduri de functionare cu o distributie a ponderilor π = { fi
| i = 1, 2, ..., n}.
=> factorul de accelerare medie armonica:
n
i i
ih
R
fT
TS
1
*1* 1
unde T* = 1/Rh* este timpul mediu armonic de executie pentru cele m moduri de
executie.
Legea lui Amdahl
caz particular al principiului de mai sus
Pentru un sistem de calcul se consideră două rate de execuţie:-rata de execuţie superioară (sau paralelă) RH;
-rata de execuţie inferioară (sau serială) RL.
Dacă f reprezintă fracţia rezultatelor generate cu rata RH şi 1-f este fracţia rezultatelor
generate cu rata RL, ecuaţia mediei armonice ponderate devine:
LH Rf
Rf
fR
1
1)(
Se presupune Ri = i, π = (1-f, 0, 0, ..., 0, f). In ecuatia pentru Sh* se inlocuieste R1 = 1 si
Rn = n:
ffn
n
nff
Rf
Rf
S
n
h
)1(1
11
11
1
*
Consecinta: Sh* → 1/(1-f) pe masura ce n → ∞.
Eficienta, utilizarea si calitatea
Se noteaza:O(n) = numarul de operatii unitare executate intr-un sistem cu n procesoare.T(n) = timp de executie (unitati de timp) in general O(n) > T(n).T(1) = O(1) intr-un uniprocesor.
Se definesc:-factorul de accelerare:
)(
)1()(
nT
TnS
-eficienta:
)(
)1()()(
nTn
T
n
nSnE
Deoarece 1≤S(n) ≤n => 1/n≤E(n) ≤1. -redundanta:
)1(
)()(
O
nOnR
Evident 1≤R(n) ≤n.
)(
)()()()(
nTn
nOnEnRnU
-utilizarea:
Sunt interesante urmatoarele relatii:
1/n≤E(n) ≤U(n) ≤11≤R(n) ≤1/E(n) ≤n
-calitatea paralelismului:
)()(
)1(
)(
)()()(
2
3
nOnTn
T
nR
nEnSnQ
deoarece E(n) ≤1, 1≤R(n) ≤n => Q(n) este limitat superior de S(n).
In concluzie:
-accelerarea indica castigul de viteza de calcul intr-un sistem paralel;
-eficienta masoara partea utila a prelucrarii (lucrului) efectuate de n procesoare;
-redundanta masoara dimensiunea cresterii incarcarii de lucru;
-utilizarea indica gradul de utilizare a resurselor in timpul calculului paralel;
-calitatea combina efectele accelerarii, eficientei si redundantei intr-o singura expresie pentru a evidentia meritul calcului paralel.
Limitări ale calculului paralel variabile:
-ts = timpul de sincronizare;
-t = timpul mediu de execuţie a unui task (granularitatea taskurilor);-to = overhead-ul taskurilor cauzat de execuţia paralelă;
-N = numărul de taskuri executate între două puncte de sincronizare;-n = numărul de procesoare.
Execuţia secvenţială a celor N taskuri, fiecare necesitând un timp t are loc într-un timp total T1 = N t.
Într-un sistem paralel:-fiecare task necesită (t+to) unităţi de timp, în loc de t.
-N taskuri pe n procesoare număr paşi paraleli (raportul celular) = N/n.
Timpul de execuţie paralelă:
)(, osnN ttn
NtT
Creşterea de viteză este:
Ntt
nN
Ntt
ttnN
t
Nt
T
TS
o
sos
nNnN
)1(
1
)(,
1,
Mărirea factorului de accelerare:
-efectul sincronizării ts/(Nt):
-scăderea timpului de sincronizare ts;
-creşterea produsului Nt (însemnând intervale mai largi între sincronizări).-efectul de overhead to/t,:
-scăderea timpului de overhead to;
-creşterea granularităţii t.-numărul de paşi de calcul N/n :
-utilizând mai multe procesoare;-număr de taskuri multiplu al numărului de procesoare.
Eficienţa sistemului multiprocesor se defineşte prin relaţia:
n
SE nN
nN,
,
Limitările calculului paralel trecerea la limită în relaţiile pentru creşterea de viteză SN,n şi eficienţa EN,n. Rezultatele în tabela:
1.5 PROGRAME PARALELE
Cateva exemple de aplicatii complexe ale calculatoarelor paralele:
-simularea curentilor oceanici (structura regulata si calcule stiintifice);-simularea evolutiei galaxiei (structura neregulata si calcule stiintifice);-generarea scenelor prin metoda „Ray Tracing” (aplicatie de grafica pe
calculator cu structura neregulata);-Data Mining (structura neregulata).
Simularea curentilor oceanici
Forte fizice: efectele atmosferice, vantul si frecarea cu fundul oceanului => sisteme complexe de ecuatii.
Problema continua in spatiu (intanderea oceanului) si in timp (se face studiul pe un interval mare de timp) => discretizarea problemei dupa ambele dimensiuni.
Discretizarea spatiului: grid de puncte egal distantate, fiecare punct avand valori pentru marimile de interes ( presiune, viteza, etc). Se utilizeaza un set de griduri bidimensionale (sectiuni orizontale prin volumul oceanului).
Timpul discretizat: serie finita de pasi.
Solutia depinde de rezolutia aleasa in ambele dimensiuni (spatiu si timp). Exemplu: o zona din ocean de 2000x2000 km2 un grid de 100x100 este insuficient (distanta dintre doua puncte 20 km, iar pentru simularea pe 5 ani, cu un pas de timp de 8 ore => 5500 pasi de timp).
Problema prezinta un paralelism intrinsec (calculele si actualizarea valorilor diferitelor puncte din spatiu se poate face in paralel). Astfel, de exemplu se poate asigna cate un grid unui procesor, calculele realizandu-se in paralel.
Simularea evolutiei galaxiei
Studiul evolutiei stelelor intr-un sistem de galaxii in timp (probleme de coliziune a galaxiilor, gruparea stelelor in galaxii).
Se simuleaza deplasarea a n corpuri, fiecare corp fiind sub influenta tuturor celorlalte corpuri (problema n-body). Timpul discretizat, mai multi pasi de timp. Pentru fiecare pas se calculeaza fortele gravitationale exercitate, actualizand pozitia, viteza si alti parametri pentru fiecare corp.
n corpuri => complexitate O(n2), dar prin algoritmi ierarhici => complexitate O(n log n).
Algoritmii ierarhici se bazeaza pe faptul ca forta de interactiune scade cu distanta (~1/r2), deci influentele corpurilor foarte indepartate pot fi calculate prin gruparea acestora si considerarea grupului ca un singur corp in centrul de masa, fara pierdere de precizie.
Algoritmii ierarhici: forta de interactiune scade cu distanta (~1/r2).
=> influentele corpurilor foarte indepartate -> prin gruparea acestora!
=> cu cat stele sunt mai indepartate de steaua curenta cu atat grupurile de aproximare pot fi mai mari.
Algoritmul utilizat: Barnes-Hut.
Caracteristici: 1) Distributia de stele neregulata (galaxiile mai dense in anumite zone si mai
imprastiate in altele).2) Distributia se modifica in timp (evolutia in timp).
=> structura neregulata si dinamica a sistemului de galaxii (implementare dificila pe un sistem paralel).
Paralelizarea programelor
Algoritm secvential pentru rezolvarea unei probleme => programul paralel.
Este necesar:-sa se identifice activitatile (incluzand calcule, accesul la date si operatii de
I/E) care pot fi efectuate in paralel;-sa se imparta activitatea si eventual si datele intre procese;-se se gestioneze accesul datelor, comunicatia si sincronizarea;
Scop: micsorarea timpului de calcul => factorul de accelerare S=T(1)/T(n).
Pasii pentru crearea unui program paralel:
1. Descompunerea: spargerea calculului (algoritmului) intr-o colectie de taskuri -> distribuite procesoarelor.
Exemplu. Program cu doua etape:1) se calculeaza in mod independent n2 valori (tablou nxn);2) se insumeaza cele n2 rezultate.
Sistem cu p procesoare: n2/p calcule fiecarui procesor(in paralel), apoi rezultatele insumate secvential intr-o variabila globala.
Timpul total in acest caz este n2/p+n2 (fata de 2n2 unitati de timp in cazul secvential). Factorul de accelerare obtinut este:
(limita 2).
Imbunatatirea algoritmului: in etapa a doua fiecare procesor face o suma locala a rezultatelor obtinute, iar apoi aceasta suma este adunata la rezultatul fina (variabila globala).
Timpul: n2/p+n2/p+p=2n2/p+p.
Factorul de accelerare in acest caz se obtine:
(pentru n mare, limita apropiata de p).
Profilul concurentei: numarul de operatii (sau taskuri) disponibile pentru executie concurenta la un moment dat.
Aria de sub grafic = volumul total de prelucrare (timp uniprocesor).Limita orizontala din grafic = timpul cel mai scurt de executie a aplicatiei (presupunand un numar infinit de procesoare). Factorul de accelerare:
2. Asignarea: mecanism de distribuire a taskurilor la procese (exemplu: algoritm Barnes-Hut -> care procese calculeaza fortele de interactiune pentru care stele).
Scop principal: echilibru de incarcare intre procese (reduce comunicatia intre procese si costul gestionarii).
Asignarea poate sa fie:
-statica (predeterminata): asignarea este complet determinata la inceputul programului, sau dupa introducerea datelor initiale si nu se modifica in timpul executiei aplicatiei;
-dinamica: asignarea lucrului la procese se determina in timpul executiei, eventual ca reactie la un dezechilibru de incarcare.
3. Orchestrarea: determinata de arhitectura si modelul de programare(chiar si de limbajul de programare).
Mecanisme:-numire si accesare a datelor;-comunicatie intre procese;-sincronizare;-planificarea taskurilor asignate unui proces (ordinea in care taskurile sunt
executate).
Scop: reducerea costului comunicatie si sincronizarii vazute de procesoare, planificarea executie mai devreme a taskurilor de care depind alte taskuri, reducerea overhead-ului corespunzator gestionarii paralelismului.
4. Maparea: repartizarea proceselor (dupa etapele 1, 2, 3 => program paralel) la procesoare.
Controlul maparii:-program;-S.O.
In cazul cel mai simplu: procesoarele masinii impartite in subseturi si doar un singur program poate rula la un moment dat pe un subset (partajarea spatiului).
Cealalta solutie extrema: S.O. controleaza dinamic momentul si spatiul (setul de procesoare) pentru executia proceselor (fara interventia utilizatorului).
=> o mai buna partajare si utilizare a resurselor.
In multe situatii reale: combinatie a celor doua.
Paralelizarea unui program
Modul al aplicatiei de simulare a curentilor oceanici: rezolvarea iterativa de ecuatii („equation solver”).
Limbaj pseudocod cu extensii pentru specificarea paralelismului (primitive de sincronizare si comunicatie, in cadrul arhitecturilor cu memorie parajata sau in transfer de mesaje).
Metoda de diferente finite (Gauss-Siedel): tablou bidimensional de (n+2)x(n+2) elemente corespunzator unui grid (sectiune orizontala prin volumul oceanului). Punctele de pe granite nu se modifica, in timp ce cele nxn puncte interioare sunt actualizate de program pornind de la valorile lor initiale, intr-un numar de pasi. La fiecare pas se opereaza asupra tuturor punctelor interioare ale gridului, fiecare punct fiind inlocuit printr-o medie ponderata a vecinilor imediati.
Actualizarile se fac imediat (un punct va vedea valorile noi la vecinii sus si stanga si valorile vechi la vecinii jos si dreapta).
Se calculeaza de asemenea si diferenta intre valoarea veche si valoarea noua pentru fiecare punct. Daca diferenta medie peste toate elementele este mai mica decat o valoare predefinita solutia a convers si se incheie algoritmul, altfel se continua cu un nou pas.
1) Descompunerea.
-studierea buclelor: daca iteratiile pot fi executate in paralel (aici nu exista concurenta: datele utilizate in iteratia curenta sunt actualizate in iteratia precedenta, deci iteratiile nu se pot executa in paralel).
-examinarea dependentelor fundamentale. Ordinea de actualizare a punctelor gridului este stanga->dreapta si sus->jos, deci punctele de pe antidiagonala (diagonala secundara, NE->SV) sunt independente din p.d.v. al calculului si deci pot fi calculate in paralel. Dezavantaje: prea multe puncte de sincronizare si incarcarea este dezechilibrata (procese cu numar de puncte intre 1-n).
-cunoasterea problemei: ordinea de evaluare a punctelor din grid nu este esentiala in metoda Gauss-Seidel => alta ordine: ordinea rosu-negru. Fiecare pas al algoritmului este impartit in doua faze complet echilibrate (actualizarea n2/2 puncte rosii si actualizare n2/2 puncte negre) ce se pot executa in paralel, cu o singura operatie de sincronizare (care nu este absolut necesara, dar convenabila).
for -> for_all (paralelizare, gradul de concurenta obtinut fiind n2).
Descompunere pe randuri: linia 18 for_all -> for (grad de concurenta n).
Sincronizare globala la sfarsitul buclei for_all (end for_all).
2) Asignarea. Solutia statica (cea mai simpla): se asigneaza cate un bloc compact de randuri la un proces (asignare de blocuri), astfel incat randul i este asignat procesului
Avantaj: reducerea comunicatiilor (randurile adiacente sunt pastrate impreuna la acelasi proces).
Solutia dinamica: un proces terminand de calculat un rand, va prelua un alt rand necalculat.
3a) Orchestrarea in modelul paralelismul datelor.
3b) Orchestrarea in modelul cu memorie partajata. Tabloul A este declarat partajat, elementele acestuia fiind accesate de procese pe masura ce sunt necesare, folosind instructiuni load/store obisnuite. Sunt utilizate mecanisme pentru crearea de procese, coordonarea acestora prin sincronizare si controlul asignarii lucrului la acestea.
Program de tip SPMD (Single Program Multiple Data). Se utilizeaza o serie de primitive cu implementari in diferite masini fizice cu memorie partajata:
3c) Orchestrarea in modelul cu transfer de mesaje. Matricea A reprezentata prin structuri de date mai mici, alocate spatiilor private ale proceselor care le prelucreaza.. In cazul acestui algoritm se aloca fiecarui proces cate un set de randuri consecutive din cadrul gridului.
Se pot utiliza operatiile REDUCE si BROADCAST pentru simplificarea codului:
Concluzii:-descompunerea si asignarea sunt asemanatoare in cele doua modele
importante, cu memorie partajata si in transfer de mesaje;-orchestrarea este diferita (structuri de date, accesul/denumirea datelor,
comunicatia, sincronizarea).
Diferente: