Documente Academic
Documente Profesional
Documente Cultură
Alpd CURS
Alpd CURS
Bibliografie
Mitică Craus
1/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Cuprins
Stadiul actual
Despre curs
Ce se doreste?
Sistemul de evaluare
Conţinut
De ce paralelism? De ce distribuiţie?
Motive
Integrare şi conectivitate
Bibliografie
2/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Stadiul actual
3/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Ce se doreste?
Rezultatele ı̂nvăţării
• Cunoaşterea problemelor generice care
Obiectivele cursului pot fi rezolvate prin algoritmi paraleli şi
• Formarea unei viziuni de ansamblu distribuiţi;
asupra sistemelor de calcul • Abilitatea de a aplica algoritmul paralel
paralel/distribuit ; şi/sau distribuit adecvat unei probleme;
• Iniţiere ı̂n algoritmica si programarea • Capacitatea de a proiecta, implementa
paralelă şi distribuitǎ. şi testa algoritmi paraleli şi distribuiţi;
• Abilitǎţi de programare paralelǎ şi
distribuitǎ.
4/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Sistemul de evaluare
Evaluarea continuă:
• Activitatea la laborator (M):
• Ponderea ı̂n nota finală: 30%
• Criterii de evaluare: rezolvarea temelor propuse şi calitatea soluţiilor.
• Teme de casă [1] (CC)
• Ponderea ı̂n nota finală: 20%
• Criterii de evaluare: rezolvarea temelor propuse şi calitatea soluţiilor.
5/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Prelegeri
6/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Lucrări de laborator
• Introducere ı̂n OpenMP
• Introducere ı̂n MPI
• Prezentare CUDA/OpenCL
• Programe MPI de simulare a scenarilor de comunicare unu la toţi şi toţi la toţi pe
hipercub
• Programe MPI de simulare a scenarilor de comunicare unu la toţi şi toţi la unu pe un
arbore oarecare
• Programe OpenMP s, i MPI pentru pentru comprimare şi calcul prefixe (reducere)
• Temă de casă: MapReduce (program MPI, cu predare ı̂n săptămâna 14)
• Sortare paralelă (Muller-Preparata - program OpenMP, Par-impar – programe
OpenMP, MPI)
• Sortare paralelă (sortare bitonică pe hipercub, program MPI)
• Calcul matriceal (transpusa unei matrice şi ı̂nmulţirea a două matrice pătratice cu
algoritmul Cannon, program MPI + demo OpenCL/CUDA)
• Sisteme de ecuaţii liniare (program OpenMP + demo OpenCL/CUDA)
• Alegerea liderului pe un inel (program MPI pentru algoritmul LCR - LeLann, Chang
si Roberts)
• Aplicaţii ale alegerii liderului: sincronizarea ceasurilor ı̂n sisteme destribuite
7/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Profesori
Curs
• Mitică Craus
Laborator
• Alexandru Archip
• Adrian Alexandrescu
• Cristian Mihai Amarandei
• Mitică Craus
8/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Motive
• Aplicaţiile o cer:
• predicţia vremii, cutremurelor, tornadelor, uraganelor;
• simularea pe calculator a proceselor fizice, chimice, biologice;
• industria aeronautica (dinamica fluidelor) si a automobilelor (simularea coliziunilor);
• ingineria materialelor;
• nano tehnologiile;
• modelarea organelor;
• descoperirea de medicamente noi;
• grafica, video;
• robotica
• bazele de date, data mining;
• inteligenţa artificială.
• Tendinţele tehnologice
• integrarea masivă;
• interconectarea.
• Tendinţele arhitecturale
• arhitecturi multicore şi multiprocesor;
• clusterele, grid-urile, norii de calcul (cloud).
9/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
2,600,000,000
10/ 11
Cuprins Stadiul actual Despre curs De ce paralelism? De ce distribuiţie? Bibliografie
Bibliografie
11/ 11
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Mitică Craus
1/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Cuprins
Introducere
Sisteme abstracte de calcul paralel/distribuit
Arhitecturi paralele/distribuite
Modele de comunicare
Taxonomie
Modelul de comunicare bazat pe memorie partajată
Modelul de comunicare bazat pe reţele de interconectare
Topologii de comunicare
Clasificare
Toplogii regulate
Graful complet
Lanţul, inelul şi steaua
Topologii arborescente
Plasele
Hipercubul
Evaluarea topologiilor regulate
Toplogii neregulate
Graful oarecare
Arborele oarecare
Modele de calcul paralel/distribuit
Taxonomii
Modelul Shared-Memory
Modelul PRAM
Modelul Message-Passing
Modelul sistolic
Bibliografie
2/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
3/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Arhitecturi paralele/distribuite
4/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Taxonomie
• Determinant ı̂n definirea unui model de comunicare este mediul de comunicare.
• Modelele de comunicare universal acceptate sunt cele bazate pe memoria partajată
şi reţelele de interconectare.
Modelul de comunicare bazat pe memorie partajată
• Are la bază principiul comunicării prin variabile de memorie.
• Topologia de comunicare are potenţialul unui graf complet, deşi acesta nu este decât
o stea specială ı̂n care memoria comună este nodul central.
• Oricare două unităţi de procesare pot comunica doar prin intermediul memoriei
comune (centrul stelei). Aceasta reprezintă o vulnerabilitate.
6/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
7/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Topologii de comunicare
Clasificare
• topologii regulate:
• graful complet;
• lanţul;
• inelul;
• steaua;
• arborele binar complet;
• arborele gras;
• fluturele;
• banyan
• plasa;
• plasa de arbori;
• hipercubul;
• amestecul prefect.
• topologii neregulate:
• graful oarecare;
• arborele.
8/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Graful complet
• Reţelele peer-to-peer.
9/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Lanţul
Figura 4 : Lant, ul
10/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Inelul
Figura 5 : Lant, ul
11/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Steaua
Figura 6 : Steaua
12/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Arborele gras
• Arbore binar complet.
• Fiecare pereche de noduri dispune de un canal de comunicare propriu.
• Numărul de muchii care leagă un nod interior de fii este egal cu 2h−nivel−1 , unde h
este adâncimea arborelui iar nivel(rădăcină)=1, nivel(frunză)=h.
14/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Fluturele
Figura 10 : Fluturele
15/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Topologia Banyan
16/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Plasa
• Este o generalizare a topologiei de tip lanţ.
• Mulţimea nodurilor V este organizată ca un tablou k-dimensional prin intermediul
unei funcţii de indexare
I : V → L = {(ik−1 , ik−2 , . . . , i0 )/0 ≤ ij < nj , j = k − 1, k − 2, ...0}, unde nj este
mărimea celei de-a j-a dimensiuni, iar n = nk−1 ∗ nk−2 · · · ∗ n0 .
• Notăm cu Vik−1 ,ik−2 ,...,i0 nodul dat de I −1 (ik−1 , ik−2 , ..., i0 ).
• Nodul Vik−1 ,ik−2 ,...,ij ,...,i0 este adiacent cu nodul Vik−1 ,ik−2 ,...,ij +1,...,i0 , dacă ij + 1 ≤ nj .
• Nodul Vik−1 ,ik−2 ,...,ij ,...,i0 este adiacent cu nodul Vik−1 ,ik−2 ,...,ij −1,...,i0 , dacă ij − 1 ≥ 0.
Figura 12 : Plase
17/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Plasa circulară
18/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Plasa de arbori
• Mulţimea nodurilor, V este partiţionată ı̂n două submulţimi M şi T
• Nodurile din M sunt organizate sub forma unei matrice.
• Conectarea nodurilor din M se realizează prin intermediul unor arbori binari formaţi
din noduri din mulţimea T , câte un arbore pentru fiecare linie şi fiecare coloană.
• Nodurile din M aparţinând unei linii/coloane constituie frunzele arborelui asociat
liniei/coloanei respective.
19/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
20/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
21/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Amestecul perfect
22/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
23/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
24/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Graful oarecare
• Internet-ul.
• Web-ul.
25/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Arborele oarecare
• reţelele locale.
26/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Modele arhitecturale
28/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Modelul Shared-Memory
• Un sistem Shared-Memory este compus din n unităţi de procesare p0 , p1 , . . . pn−1 şi
m regiştri de memorie, r0 , r1 , . . . rm−1 .
• Fiecare registru este caracterizat prin:
• valoarea care poate fi memorată ı̂n registru;
• operaţiile care pot fi efectuate asupra conţinutului registrului;
• valoarea returnată de fiecare operaţie ;
• valoarea aflată ı̂n registru după fiecare operaţie.
• Exemplu - registrul integer-valued read/write:
• Valorile v memorate de registrul v sunt numere ı̂ntregi.
• Operaţiile suportate sunt read(r,v) and write(r,v).
• Operaţia read(r,v) ı̂ntoarce valoarea v şi lasă conţinutul registrului neschimbat.
• Operaţia write(r,v) nu returnează nimic, dar schimbă conţinutul registrului r ,
ı̂nscriind acolo valoarea v .
• Evenimente:
• Evenimentele sunt paşi computaţionali, executaţi de unităţile de procesare .
• Un pas computaţional, executat de o unitate de procesare pi , este executat astfel:
• În funcţie de starea sa, pi selectează un registru rj şi una din operaţiile asociate acestui
registru.
• Execută operaţia asupra conţinutului lui rj .
• Îşi schimbă starea, ı̂n funcţie de starea curentă şi valoarea returnată de operaţia executată.
29/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Modelul PRAM
• Este derivat din modelul Shared-Memory.
• Unităţile de procesare sunt procesoare simple.
• Cele p(n) procesoare P1 , . . . , Pp(n) comunică ı̂ntre ele prin intermediul regiştrilor de
memorie R1 , ..., Rm(n) .
• Procesoarele execută ı̂n mod sincron aceeaşi instrucţiune, sub control central.
• Deşi instrucţiunea este aceeaşi, regiştrii de memorie asupra cărora acţionează
procesoarele pot diferi de la un procesor la altul.
• Conform taxonomiei Flynn, maşina PRAM este un sistem SIMD.
30/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
31/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Modelul Message-Passing
• Un sistem Message-Passing este compus din n unităţi de procesare p0 , p1 , . . . pn−1 care
comunică ı̂ntre ele prin mesaje transmise pe canalele de comunicare care le conectează.
• Topologia de comunicare este reprezentată printr-un graf G = (v , E ), care asignează fiecărui
vârf vi o unitate de procesare pi . Fiecare muchie ek ∈ E reprezintă un canal de comunicare
directă ı̂ntre două unităţi de procesare pi şi pj .
• Fiecare unitate de procesare pi poate fi ı̂ntr-o stare din mulţimea de stări Qi . Fiecare stare
include două mulţimi de regiştri: (inbufi k , k = 1, . . . , d) şi (outbufi k , k = 1, . . . , d), unde d este
gradul vârfului vi asignat lui pi .
• Un registru inbufi k conţine mesajele pe care unitatea de procesare pi le-a primit de la
unitatea de procesare vecină pj , prin canalul de comunicare directă k. Un registru outbufi k
conţine mesajele pe care unitatea de procesare pi le-a transmis spre unitatea de procesare
vecină pj , prin canalul de comunicare directă k.
• Mulţimea de stări Qi conţine o submulţime de stări speciale, ı̂n care regiştrii inbufl nu
memorează nici un mesaj.
• Evenimentele sunt paşi computaţionali şi paşi de comunicare.
• În timpul unui pas computaţional, o unitate de procesare pi cites, te s, i apoi resetează regis, trii
inbufi k , k = 1, . . . , d s, i produce valori noi pentru outbufi k , k = 1, . . . , d, schimbându-s, i ı̂n
acelas, i timp starea internă.
• Evenimentul de comunicare ı̂nseamnă o operat, ie de transmisie, i.e. un mesaj memorat ı̂n
outbuf-ul unei unităt, i de procesare pi este transmis, prin canalul de comunicare directă, la
destinat, ia pj , unde va fi memorat ı̂n inbuf .
32/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Modelul sistolic
33/ 34
Cuprins Introducere Modele de comunicare Topologii de comunicare Modele de calcul paralel/distribuit Bibliografie
Bibliografie
34/ 34
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Mitică Craus
1/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Cuprins
2/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
3/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Tipuri de comunicare
• unu la unu.
• comunicări colective:
• unu la un grup, unu-la-toţi: broadcast, scatter;
• un grup la un grup, un grup la toţi, toţi la un grup, toţi la toţi;
• un grup la unu, toţi la unu: reduction, gather.
4/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Copyright
c V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms, Addison Wesley, 2003.
Copyright
c V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms, Addison Wesley, 2003.
√
Timpul de execuţie: T = (Ts + Tc m)d p/2e.
6/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Copyright
c V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms, Addison Wesley, 2003.
7/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
• Notat, ii:
• H este un hipercub cu d dimensiuni.
• M este un mesaj care urmează a fi transmis tuturor unităt, ilor de procesare.
• i este identificatorul unităt, ii de procesare care executa algoritmul de difuzie
unu la tot, i pe hipercub.
• Premise:
• Init, ial, mesajul M se află ı̂n nodul 0 al hipercubului H.
8/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
9/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Copyright
c V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms, Addison Wesley, 2003.
10/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Copyright
c V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms, Addison Wesley, 2003.
• Notat, ii:
• H este un hipercub cu d dimensiuni.
• i este identificatorul unităt, ii de procesare care executa algoritmul de difuzie unu la tot, i
pe hipercub.
• Mi este mesajul care urmează a fi transmis de unitatea de procesare id tuturor
unităt, ilor de procesare.
• Premise:
• Init, ial, fiecare unitate de procesare i det, ine un mesaj Mi care urmează a fi transmis
tuturor unităt, ilor de procesare plasate ı̂n nodurile hipercubului H.
12/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Copyright
c V. Kumar, A. Grama A. Gupta & G Karypis, Introduction to Parallel Computing: Design and Analysis of Algorithms, Addison Wesley, 2003.
Definit, ie: Fiecare unitate de procesare i trimite câte un trimite un mesaj Mij la fiecare
unitate de procesare j.
14/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
cod pi 6= pr
difuzie unu la toti pe arbore(T , pi , M)
1 asteapta primirea mesajului M de la parinte;
2 dupa primirea lui M trimite mesajul la fii;
3 termina executia.
15/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Complexitatea
Teorema (1)
Numărul de paşi, după care toate unităţile de procesare termină execuţia algoritmului =
h (adâncimea arborelui T ).
Demonstraţie.
Inducţie.
Teorema (2)
Numărul de mesaje, care sunt transmise de toate unităţile de procesare, ı̂n timpul
execuţiei algoritmului = n − 1.
Demonstraţie.
Pe fiecare muchie este transmis câte un mesaj, de la părinte spre fii.
16/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
cod pr
difuzie toti la unu pe arbore(T , pr , Mr )
1 asteapta primirea valorilor Mr0 , Mr1 , . . . , Mrk−1 de la fii;
2 dupa primire, calculeaza Mr ← f (Mr , Mr0 , Mr1 , . . . , Mrk−1 );
3 termina executia.
17/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
Complexitatea
Teorema (3)
Numărul de paşi, după care toate unităţile de procesare termină execuţia algoritmului =
h( adâncimea arborelui T ).
Demonstraţie.
Inducţie.
Teorema (4)
Numărul de mesaje, care sunt transmise de toate unităţile de procesare, ı̂n timpul
execuţiei algoritmului = n − 1.
Demonstraţie.
Pe fiecare muchie este transmis câte un mesaj, de la fii către părinte.
18/ 19
Cuprins Parametri de performanţă a unui algoritm paralel/distribuit Comunicarea ı̂n sistemele de calcul paralel/distribuit
• Comunicarea ı̂ntre grupuri este similară cu comunicare ı̂ntre toate unităt, ile de
procesare ale sistemului.
• Deosebirile sunt următoarele:
• Pe parcursul execut, iei algoritmului de comunicare doar unităt, ile de procesare membre
ale grupurilor vor init, ia un transfer sau vor memora un mesaj.
• Celelalte unităt, i de procesare au rol de retransmisie a mesajelor (releu).
19/ 19
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Mitică Craus
1/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Cuprins
Comprimarea (Reducerea)
Algoritm recursiv de comprimare
Algoritm paralel de comprimare
Corectitudinea şi complexitatea
Reducerea numărului unităţilor de procesare
Comentarii
Calculul Prefixelor (Scan)
Algoritmul de calcul al prefixelor ı̂n cazul ı̂n care operatia ⊕ admite
element simetric
Algoritmul de calcul al prefixelor ı̂n cazul ı̂n care operatia ⊕ nu admite
element simetric
Corectitudinea şi complexitatea
Comentarii
Scurtcircuitarea (dublarea)
Algoritm paralel de scurtcircuitare
Complexitatea
Aplicaţii ale scurtcircuitării: Calcul ranguri
Comentarii
2/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Comprimarea (Reducerea)
3/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
• Notat, ii:
• A[0..n − 1] este un tablou de dimensiune n = 2m .
• Prin (A, k, k + l − 1) se notează segmentul din tabloul A care ı̂ncepe pe poziţia k şi se
termină pe poziţia k + l − 1
• Premise:
• Datele de intrare sunt init, ial memorate ı̂n tabloul A[0..n − 1].
• Init, ial, k = 0 si l = n.
Comprim Recursiv(A, k, k + l − 1)
1 if l = 1
2 then return A[k]
3 else return Comprim Recursiv(A, k, k + l/2 − 1) ⊕ Comprim Recursiv(A, k + l/2, k + l − 1).
4/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
• Notat, ii:
• A[0..2n − 1] este un tablou de dimensiune 2n = 2m+1 .
• Premise:
• Datele de intrare sunt memorate ı̂n tabloul A[0..2n − 1], ı̂n locat, iile
A[n], A[n + 1], . . . , A[2n − 1].
Comprim Paralel(A, ⊕)
1 for k ← m − 1 down to 0
2 do for all j : 2k ≤ j ≤ 2k+1 − 1
3 do in parallel
4 A[j] ← A[2j] ⊕ A[2j + 1];
5/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
6/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Teorema (1)
La terminarea execut, iei algoritmului A[1] = a0 ⊕ a1 ⊕ . . . an−1 .
Teorema (2)
Complexitatea timp a algoritmului de comprimare (implementat pe o masina
CREW-PRAM sau pe o ahitectura VLSI de tip arbore binar) este O(log n).
Demonstraţie.
Adâncimea arborelui de calcul este log n.
Teorema (3)
Numarul unităt, ilor de procesare este p ≥ d n2 e
Demonstraţie.
In prima iteraţie sunt active d n2 e unităt, ilor de procesare. Apoi numărul lor scade pâna la 1.
7/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
8/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Comentarii
9/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
10/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
11/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
12/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
13/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Teorema (4)
La terminarea execut, iei algoritmului,
B[n] = a0 , B[n + 1] = a0 ⊕ a1 , . . . , B[2n − 1] = a0 ⊕ a1 ⊕ · · · ⊕ an−1 .
Teorema (5)
Complexitatea timp a algoritmului paralel de calcul al prefixelor (implementat pe
o masina CREW-PRAM sau pe o ahitectura VLSI de tip arbore binar) este
O(log n).
Demonstraţie.
Adâncimea arborelui de calcul este log n.
Teorema (6)
Numarul unităt, ilor de procesare este d logn n e.
Demonstraţie.
Necesarul de unităt, ide procesare este acelas, i cu cel de la comprimare .
14/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Comentarii
15/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Scurtcircuitarea (dublarea)
16/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
17/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Complexitatea
Teorema (7)
Complexitatea timp a algoritmului paralel de scurtcircuitare, implementat pe o masina
CREW-PRAM, este O(log n).
18/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
19/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
20/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
21/ 22
Cuprins Comprimarea (Reducerea) Calculul Prefixelor (Scan) Scurtcircuitarea (dublarea)
Comentarii
22/ 22
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Mitică Craus
1/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Cuprins
Introducere
Algoritmul Muller-Preparata
Descriere
Pseudocod
Exemplu de execuţie
Corectitudinea
Complexitatea
Comentarii
Algoritmul Impar-Par (Odd-Even Sort)
Descriere
Pseudocod pentru algoritmul secvenţial
Exemplu de execuţie
Pseudocod pentru un lanţ de unităţi de procesare
Complexitatea
Comentarii
Sortare bitonică
Descriere
Pseudocod
Exemplu de sortare a unei secvenţe bitone
Corectitudinea
Implementare
Complexitatea
Comentarii
Sortare rapidă pe hipercub
Descriere
Pseudocod
Exemplu de execuţie
Complexitatea
Comentarii
Comentarii bibliografice
2/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Introducere
3/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
4/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
5/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Figura 1 : Exemplu de execuţie a algoritmului de sortare paralelă Muller-Preparata pentru secvenţa 2,6,3,8
6/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea
Lema (1)
Poziţiile finale ale elementelor secvent, ei a0 , a1 , . . . , an−1 respectă relaţia de ordine ” < ”.
Demonstraţie.
În urma calculării numărului elementelor care se află ı̂n faţa unui element ai (COMPRIM ITERATIV
(R[j],+)), se obţine poziţia finală a acestuia, ı̂n concordanta cu relaţia de ordine ” < ”.
Teorema (1)
Algoritmul Muller-Preparata sortează corect o secvent, ă de elemente a0 , a1 , . . . , an−1
dintr-o mult, ime U peste care este definită o relaţie de ordine totală ” < ”.
Demonstraţie.
Consecint, ă imediată a lemei 1.
7/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Complexitatea
Teorema (2)
Complexitatea timp a algoritmului de sortare paralelă Muller-Preparata, implementat pe
n2
o masina CREW-PRAM cu O( log n ) unităţi de procesare, este O(log n).
Demonstraţie.
1. Determinarea poziţiilor relative pentru fiecare pereche {ai , aj }, i, j = 0, 1, . . . , n − 1: dacă
maşina CREW-PRAM este compusă din n2 unităt, i de procesare, timpul paralel este O(1);
n2
dacă numărul unităt, ilor de procesare este d log n e, timpul paralel este O(log n) (tehnica este
aceeaşi cu cea de la comprimare).
2. Calcularea pozitiilor finale ale elementelor ai , i = 0, 1, . . . , n − 1: pentru fiecare i, sunt
necesare cel put, in d logn n e unităt, i de procesare, pentru a calcula pozit, ia finală a elementului
ai ı̂n timpul paralel O(log n) (vezi complexitatea algoritmului paralel de comprimare).
Rezultă un necesar de nd logn n e unităt, i de procesare pentru a calcula toate pozit, iile finale ı̂n
timpul paralel O(log n).
3. Plasarea elementelor aj pe pozitiile corecte: cu n unităt, i de procesare pentru se obţine
timpul paralel O(1).
8/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
• Totusi, algoritmul nu este optimal, deoarece cel mai rapid algoritm secvential are
timpul de executie de O(n log n).
9/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
10/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
11/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
12/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Complexitatea
Teorema (3)
Complexitatea timp a algoritmului de sortare paralelă Impar-Par, implementat pe un lant,
de n unităţi de procesare, este O(n).
Demonstraţie.
Timpul paralel pentru fiecare fază este O(1). După n faze algoritmul se termină.
14/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
15/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
16/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Secvenţe bitone
17/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Sortare Batcher(A, i, d, s)
1 if d = 2
2 then (A[i], A[i + 1]) ← Compara si Schimba(A[i], A[i + 1], s)
3 else / ∗ sortare crescătoare a unei secvenţe S de lungime d2 ∗ /
4 Sortare Batcher(A, i, d2 , 0)
5 / ∗ sortare descrescătoare a secvenţei S 0 , care urmează lui S, de lungime d
2 ∗/
6 Sortare Batcher(A, i + d2 , d2 , 1)
7 / ∗ sortarea secvenţei bitone SS 0 , de lungime d ∗ /
8 Sortare Secventa Bitona(A, i, d, s)
18/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
19/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
20/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea
Lema (2)
Dacă algoritmul lui Batcher sortează orice secvent, ă de chei de sortare binare, atunci
sortează orice secvent, ă de chei de sortare numere reale oarecare.
Demonstraţie.
Fie f : R → R o funcţie monotonă. Astfel, f (ai ) ≤ f (aj ) dacă şi numai dacă ai ≤ aj . Evident,
dacă algoritmul lui Batcher transformă secvenţa [a1 , a2 , . . . , an ] ı̂n secvenţa [b1 , b2 , . . . , bn ], atunci
va transforma secvenţa [f (a1 ), f (a2 ), . . . , f (an )] ı̂n secvenţa [f (b1 ), f (b2 ), . . . , f (bn )]. Astfel, dacă
ı̂n secvenţa [b1 , b2 , . . . , bn ] există un indice i pentru care bi > bi+1 , atunci ı̂n secvenţa
[f (b1 ), f (b2 ), . . . , f (bn )] vom avea f (bi ) > f (bi+1 ). (
0 , dacă bj < bi
Fie acum f o funcţie monotonă definită astfel: f (bj ) =
1 , dacă bj ≥ bi
În aceste condiţii, secvenţa [f (b1 ), f (b2 ), . . . , f (bn )] va fi o secventă binară nesortată deoarece
f (bi ) = 1 şi f (bi+1 ) = 0. Rezultă că algoritmul lui Batcher eşuează ı̂n sortarea secvenţei binare
[f (a1 ), f (a2 ), . . . , f (an )]. Deci, dacă algoritmul lui Batcher eşuează ı̂n sortarea unei secvenţe de
chei de sortare numere reale oarecare, atunci există o secvenţa binară care nu va fi sortată ı̂n
urma aplicăriii algoritmului lui Batcher.
21/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea -continuare
Teorema (4)
Algoritmul lui Batcher sorteaza cele n elemente ale secvent, ei memorate ı̂n tabloul A[0..n − 1], ı̂n
ordinea crescătoare (s = 0) respectiv descrescătoare (s = 1) a cheilor de sortare.
Demonstraţie.
Este suficient să demonstrăm corectitudinea procedurii SORTARE SECVENTA BITONA pentru cazul binar (Lema 2). Procedăm
prin inducţie după lungimea d a secvenţelor procesate.
Dacă d = 2, evident procedura SORTARE SECVENTA BITONA transformă secvenţa iniţială Sinit = A[i..i + d − 1] ı̂ntr-o secvenţă
sortată Sfin .
Vom demonstra că procedura SORTARE SECVENTA BITONA transformă o secvenţă binară Sinit de tipul 0r 1t 0v sau
1r 0t 1v (r + t + v = d) ı̂ntr-o secvenţă Sfin sortată ı̂n ordinea indicată de valoarea lui s, (∀)d ≥ 2
Pasul paralel 6 transformă secvenţa Sinit ı̂ntr-o secvenţă Stemp conform figurilor 2 şi 3.
1
Se observă că ı̂n toate cazurile, secvenţa rezultată Stemp , este formată din două sub-secvenţe bitone Stemp 2
şi Stemp , fiecare de
lungime d2 . O secvenţă este de tipul Sinit iar cealaltă secvenţă cont, ine numai cifre 0 sau numai cifre 1. Dacă s = 0, cheia
1
maximă din Stemp este mai mică sau egală cu cheia minimă din Stemp 2 1
. Dacă s = 1, cheia minimă din Stemp este mai mare sau
2
egală cu cheia maximă din Stemp .
Conform ipotezei de inducţie, procedura 1
SORTARE SECVENTA BITONA transformă secvenţele Stemp 2
şi Stemp ı̂n două secvenţe
1 şi S 2 , sortate crescător (d = 0) sau descrescător (s = 1). Dacă s = 0, cheia maximă din S 1 este mai mică sau egală cu
Sfin fin fin
2 deci secvenţa S 1 S 2 este crescătoare. Daca s = 1, cheia minimă din S 1 este mai mare sau egală cu
cheia minimă din Sfin fin fin fin
2 deci secvenţa S 1 S 2 este descrescătoare.
cheia maximă din Sfin fin fin
22/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea -continuare
s p + q(p, q ≤ d2 ) Secvenţa iniţială Secvenţa rezultată
d d d d
0 ≤ d2 0 2 −p 1p 1q 0 2 −q 0 2 1q 0 2 −(p+q) 1p
d d
0 ≤ d2 02 0k 1p+q 0m 02 0k 1p+q 0m
d d
0 ≤ d2 0k 1p+q 0m 0 2 02 0k 1p+q 0m
d d d d
0 ≤ d2 1p 0 2 −p 0 2 −q 1q 02 1p 0 2 −(p+q) 1q
d d d −(p+q) d
0 ≤ d
2 12 1p 0 2 −(p+q) 1q p
1 02 1q 1 2
d d d d
0 ≤ d
2 1p 0 2 −(p+q) 1q 1 2 1p 0 2 −(p+q) 1q 1 2
d d d d d d
0 > d
2 0 2 −p 1p 1q 0 2 −q 0 2 −p 1(p+q)− 2 0 2 −q 1 2
d −p d −q d −q (p+q)− d d −p d
0 > d 1 0 2 0 2 1q
p 02 1 2 02 12
2
d d d d
1 ≤ d
2 0 2 −p 1p 1q 0 2 −q 1q 0 2 −(p+q) 1p 0 2
d d
1 ≤ d 0 2 0k 1p+q 0m 0k 1p+q 0m 0 2
2
d d
1 ≤ d 0k 1p+q 0m 0 2 0k 1p+q 0m 0 2
2
d d d d
1 ≤ d
2 1p 0 2 −p 0 2 −q 1q 1p 0 2 −(p+q) 1q 0 2
d d d d
1 ≤ d
2 12 1p 0 2 −(p+q) 1q 12 1p 0 2 −(p+q) 1q
d −(p+q) d d d
1 ≤ d
2
p
1 02 1q 1 2 12 1 0 2 −(p+q) 1q
p
d −p d −q d d −p (p+q)− d d
1 > d
2 0 2 1p 1q 0 2 12 02 1 2 0 2 −q
d d d d d d
1 > d
2 1p 0 2 −p 0 2 −q 1q 12 0 2 −q 1(p+q)− 2 0 2 −p
Figura 4 : Corectitudinea
23/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Corectitudinea -continuare
s=0
s=1
Figura 5 : Corectitudinea
24/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 7 : Reţea de comparatori care transformă o secvenţă oarecare ı̂n una bitonă (R1 ); n = 16
26/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
27/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
(a) (b)
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 9 : (a) Planificarea dimensiunilor (b)Fazele sortării prin ret, ele de sortare Batcher
29/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Teorema (4)
Complexitatea timp a algoritmului lui Batcher de sortare paralelă, implementat pe
mas, ină CREW-PRAM cu O(n) unităt, i de procesare este O(log2 n). Eficient, a
algoritmului este O( log1 n ).
Demonstraţie.
Timpul paralel pentru sortarea unei secvent, e bitone de lungime d < n este O(log d). După log n
O(n log n) 1
faze algoritmul se termină. Eficient, a este nO(log 2 n) = O( log n ).
31/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Teorema (5)
Complexitatea timp a algoritmului lui Batcher de sortare paralelă, implementat pe o
ret, ea de sortare cu O(n) intrări si ies, iri, este O(log2 n).
Demonstraţie.
Ret, eaua (R1 , R2 ) implementează algoritmul lui Batcher. Numărul de faze este log n. Fazele sunt
compuse din log d < log n paşi
32/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Teorema (6)
Complexitatea timp a algoritmului lui Batcher de sortare paralelă, implementat pe un
hipercub cu O(n) unităţi de procesare este O(log2 n).
Demonstraţie.
Sortarea Batcher pe hipercub este congruentă cu sortarea Batcher pe reţele de sortare
33/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
• Algoritmul lui Batcher de sortare paralelă este din clasa timp O(log2 n). Numărul
de unităt, i de procesare este din clasa O(n). Comparativ cu algoritmii
Muller-Preparata şi Impar-Par are un cost mai bun.
• Totuşi, costul nu este optimal: (Numarul de unităt, i de procesare ) x (timpul
paralel) = n log2 n = O(n log2 n). Timpul pentru cel mai rapid algoritm secvenţial
este O(n log n).
34/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
• Să ne amintim că un hipercub cu m dimensiuni este format din două hipercuburi cu
m − 1 dimensiuni.
• Numărul unităţilor de procesare, p, este mai mic decât numărul elementelor
secvenţei de sortat, n.
• Ideea este de a partiţiona secvenţa de sortat pe subcuburi şi apoi de a repeta repeta
recursiv această operaţie.
• Selectarea pivotului este problema cheie.
35/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
36/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 11 : Partiţionarea secvenţei de sortat ı̂n două blocuri. Se utilizează dimensiunea a treia (m − 1).
37/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
Figura 12 : Partiţionarea fiecărui bloc ı̂n două sub-blocuri. Se utilizează dimensiunea a doua (m − 2 = 1).
38/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Copyright
1994
c Benjamin/Cummings Publishing Co.
39/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Complexitatea
Teorema (7)
Dacă pivotul este ales astfel ı̂ncât să partit, ioneze secvent, a ı̂n două subsecvent, e de
dimensiuni aproximativ egale, atunci
n n n
Tp = O( log ) + O( log p) + O(log2 p)
p p p
.
40/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii
• Selectarea unui pivot care să partit, ioneze secvent, a ı̂n două subsecvent, e de
dimensiuni aproximativ egale este dificilă.
41/ 42
Introducere Algoritmul Muller-Preparata Algoritmul Impar-Par (Odd-Even Sort) Sortare bitonică Sortare rapidă pe hipercub Comentarii bibliografice
Comentarii bibliografice
42/ 42
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Mitică Craus
1/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Cuprins
Introducere
Transpusa unei matrice
Descriere
Pseudocod
Implementare
Exemplu de execuţie
Complexitatea
Inmulţirea de matrice pătractice
Descriere
Pseudocod
Implementare
Exemplu de execuţie
Complexitatea
Comentarii bibliografice
2/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Introducere
3/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
• Dată fiind matricea pătratică An×n = (ai,j )i,j=0,1...,n−1 , se cere să se calculeze
matricea AT T
nxn = (ai,j )i,j=0,1...,n−1 , pentru care
T
ai,j = aj,i , (∀)i, j = 0, 1 . . . , n − 1
.
• Fără calcule.
• Doar mişcări de elemente.
• Timpul secvenţial Ts (n) = O(n2 ).
4/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
• Notat, ii:
• A[0..n − 1, 0..n − 1] este un tablou bidimensional, de dimensiune nxn.
• Premise:
• Datele de intrare sunt memorate ı̂n tabloul A.
• Datele finale vor fi memorate ı̂n tabloul A.
5/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Figura 1 : Exemplu de execuţie a algoritmului de transpunere a unei matrice 4x4 pe o plasă de unităţi de procesare
6/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
• Notat, ii:
• A[0..n − 1, 0..n − 1] este un tablou bidimensional, de dimensiune nxn.
• Premise:
• n = 2m .
• Datele de intrare sunt memorate ı̂n tabloul A.
• Matricea A este divizată ı̂n patru blocuri: stânga-sus, dreapta-sus, stânga-jos,
dreapta-jos.
• Datele finale vor fi memorate ı̂n tabloul A.
7/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
8/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
9/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Implementare pe hipercub
p
1 Hipercubul este divizat ı̂n 4 subcuburi cu 4 procesoare.
2 Sferturile de matrice (quadrant, ii) sunt mapate recursiv pe cele 4 subcuburi
astfel:
• cubul 00∗ cont, ine sfertul stânga-sus al matricei A;
• cubul 01∗ cont, ine sfertul dreapta-sus sfert al matricei A;
• cubul 10∗ cont, ine sfertul stânga-jos al matricei A;
• cubul 11∗ cont, ine sfertul dreapta-jos al matricei A.
3 Se interschimbă blocurile stânga-jos cu dreapta-sus.
4 Se repetă paşii 1-3 ı̂n fiecare subcub.
10/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
12/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Teorema (1)
Complexitatea timp a algoritmului recursiv de transpunere a unei matrice Anxn ,
2
implementat pe un hipercub cu p unităt, i de procesare este O( np log p). Eficient, a
algoritmului este O( log1 n ).
Demonstraţie.
n2
Divizarea recursivă se opreşte când dimensiunea blocului este p . Numărul de paşi de
interschimbare de blocuri este log4 p = log22 p ; fiecare pas de interschimbare se realizează pe două
dintre dimensiunile hipercubului (două muchii). Timpul de transfer al unui bloc de dimensiune
n2 n2 n2
p este O( p ). Transpunerea locală necesită O( p ) timp.
2
Rezultă că timpul total este O( np log p). Costul este O(n2 log p) - nu este optimal.
13/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
• Date fiind matricele pătratice An×n = (ai,j )i,j=0,1...,n−1 şi Bn×n = (bi,j )i,j=0,1...,n−1 , se
cere să se calculeze matricea pătratică Cnxn = (ci,j )i,j=0,1...,n−1 , conform cu formula
n−1
ci,j = ∑ ai,k xbk,j , (∀)i, j = 0, 1 . . . , n − 1
k=0
.
• Timpul secvenţial Ts (n) = O(n3 ).
14/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
• Notat, ii:
• A[0..n − 1, 0..n − 1], B[0..n − 1, 0..n − 1] s, i C [0..n − 1, 0..n − 1] sunt tablouri
bidimensionale, de dimensiune nxn.
• Premise:
• Datele de intrare sunt memorate ı̂n tablourile A s, i B;
A[i, j] = ai,j , B[i, j] = bi,j , i, j = 0, 1, . . . , n − 1.
• Datele finale vor fi memorate ı̂n tabloul C .
Inmultire Matrice(A, B, n)
1 for i = 0 to n − 1
2 do for j = 0 to n − 1
3 do C [i, j] ← 0
4 for k = 0 to n − 1
5 do C [i, j] ← C [i, j] + A[i, k]xB[k, j]
6 return C
15/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
• Notat, ii:
• A[0..n − 1, 0..n − 1], B[0..n − 1, 0..n − 1] s, i C [0..n − 1, 0..n − 1] sunt tablouri
bidimensionale, de dimensiune nxn.
• Matricele A s, i B sunt divizate ı̂n blocuri Ai,k şi respectiv Bk,j , de dimensiuni qn × qn .
• INMULTIRE MATRICE(Ai,k , Bk,j , qn ) semnifică ı̂nmult, irea blocului Ai,k cu Bk,j şi
returnarea rezultatului Ai,k xBk,j .
• Premise:
• Datele de intrare sunt memorate ı̂n tablourile A s, i B.
• Datele finale vor fi memorate ı̂n tabloul C .
16/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Implementarea standard
17/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
18/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Alinierea iniţială
20/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
21/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Poziţiile blocurilor după a II-a deplasare Poziţiile blocurilor dupa a III-a deplasare
22/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Teorema (2)
3
Complexitatea timp a algoritmului lui Cannon este O( np ). Eficient, a algoritmului este
O(1).
Demonstraţie.
√
Numărul de transmisii s, i primiri de blocuri M1 efectuate de pi,j este i + q − 1 = i + p − 1.
√
Numărul de transmisii s, i primiri de blocuri M2 efectuate de pi,j este tot j + q − 1 = j + p − 1.
Se observă că pq−1,q−1 efectuează cele mai multe transmisii s, i primiri de blocuri,
√
q − 1 + q − 1 = 2(q − 1) = 2( p − 1). Rezultă pentru deplasările de blocuri o complexitate timp
2 √
de O( np p). Numărul ı̂nmult, irilor s, i adunărilor efectuate de o unitate de procesare este
√ 3
O(( √np )3 p)=O( np ); O(( √np )3 ) pentru fiecare ı̂nmult, ire s, i adunare de blocuri. Costul este
3
O(p)O( np ) = O(n3 ).
23/ 24
Cuprins Introducere Transpusa unei matrice Inmulţirea de matrice pătractice Comentarii bibliografice
Comentarii bibliografice
24/ 24
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
Mitică Craus
1/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
Cuprins
Introducere
Sistem de ecuaţii liniare
Descriere
Pseudocod
Implementare
Complexitatea
Comentarii bibliografice
2/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
Introducere
• Sistemele de ecut, ii liniare pot fi rezolvate prin tehnici de calcul paralel datorită
multiplelor operat, ii independente una de alta.
• Vom studia ı̂n această lecţie metoda lui Gauss de rezolvare a sistemelor de ecuat, ii
liniare.
3/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
• şi rezolvarea ecuaţiilor ı̂n ordine inversă ( ı̂ntâi ultima, apoi penultima şi la sfârşit
prima ecuaţie din sistem)
4/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
Eliminare Gaussiana(A, B, n)
1 for k ← 0 to n − 1 / ∗ bucla exterioară ∗ /
2 do
3 for j ← k + 1 to n − 1
A[k,j]
4 do A[k, j] ← A[k,k] / ∗ pasul de impărt, ire cu A[k, k] ∗ /
B[k]
5 B[k] ← A[k,k]
6 A[k, k] ← 1
7 for i ← k + 1 to n − 1
8 do for j ← k + 1 to n − 1
9 do A[i, j] ← A[i, j] − A[i, k]xA[k, j]/ ∗ pasul de eliminare ∗ /
10 B[i] ← B[i] − A[i, k]xB[k]
11 A[i, k] ← 0
5/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
6/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
8/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
9/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
10/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
Teorema (1)
Complexitatea timp a implementării algoritmului eliminării Gaussiene pe un lanţ de n
unităţi de procesare este Θ(n2 ).
Demonstraţie.
Timpul consumat ı̂n iteraţia k este Θ(n − k − 1). Timpul total este ∑k=n−1
k=0 Θ(n − k − 1)
=Θ(n − 1) + Θ(n − 1) + · · · + Θ(0) = Θ(n2 ).
11/ 12
Cuprins Introducere Sistem de ecuaţii liniare Comentarii bibliografice
Comentarii bibliografice
12/ 12
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Mitică Craus
1/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Cuprins
Introducere
Parcurgerea euleriană a unui arbore
Descriere
Transformarea unui arbore neorientat ı̂n arbore cu rădăcină
Numerotarea vârfurilor ı̂n preordine şi postordine
Calculul relaţiilor ”este un descendent al lui ” şi ”este un strămoş al lui ”
Calculul minimului (maximului) valorilor din subarborele cu rădăcina ı̂ntr-un nod
oarecare:
Colorarea arborilor
Colorarea arcelor
Colorarea vârfurilor
2/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Introducere
• Arborii sunt obiectul unor calcule care deseori constituie taskuri ı̂n probleme de
grafuri.
• Sunt frecvente cazurile ı̂n care algoritmi polilogaritmici eficienţi sunt obţinuţi pe
baza unor calcule pe arbori.
• Problemele relative la arbori, abordate ı̂n acestă lecţie sunt:
1. Parcurgerea unui arbore ı̂n sens eulerian:
2. Aplicaţii ale parcurgerii euleriene:
2.1 Transformarea unui arbore neorientat ı̂n arbore cu rădăcină;
2.2 Numerotarea preordine si postordine a vârfurilor unui arbore;
2.3 Calculul relaţiilor ”este un descendent al lui ” şi ”este un strămoş al lui ”;
2.4 Calculul minimului (maximului) valorilor din subarborele cu rădăcina ı̂ntr-un nod oarecare.
3. Colorarea arborilor:
3.1 Colorarea arcelor;
3.2 Colorarea vârfurilor.
3/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
4/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
5/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
• Problema cheie este calcularea, pentru arcul (i, j), a valorii index(succ(j,i)).
• Dacă se copie tabloul A ı̂ntr-un tablou B şi apoi se sortează tabloul B ı̂n ordinea
crescătoare a valorilor lui j, atunci B[k] va conţine h(j, i), index(succ(j, i))i.
• Aceasta presupune o fază de preprocesare de complexitate timp ≥ O(log n).
• În aceste condiţii, algoritmulPARCURGERE EULERIANA ARBORE(A, n) are
complexitate timp O(1), pe o maşină PRAM cu O(n) unităţi de procesare.
6/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
7/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
8/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
9/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
• Fie (r , j) primul arc din tabloul A. Arborele neorientat T va fi transformat ı̂n arbore
cu rădăcina r . Pentru fiecare vârf i 6= r se determină părinte(i) ı̂n modul următor:
1. Se numerotează elementele listei LE prin intermediul procedurii CALCUL RANGURI.
2. Rangurile rezultate vor fi modificate astfel incât să reprezinte distanţa unui arc faţă de
primul element al listei LE . Dintre două arce (i, j) şi (j, i) cel de rang mai mic este
marcat ca fiind arc direct iar cealalt invers.
3. Sublistele rezultate vor fi numite LED = lista arcelor directe, respectiv LEI = lista
arcelor inverse.
4. Pentru fiecare arc direct (i, j), părinte[j] ← i.
• Pentru simplificarea limbajului vom nota index(succ(i, j)) cu index(succ(A[k]), dacă
A[k] = h(i, j), index(succ(i, j))i.
10/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
11/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
12/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
13/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
14/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
16/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Colorarea arcelor
17/ 18
Cuprins Introducere Parcurgerea euleriană a unui arbore Colorarea arborilor
Colorarea vârfurilor
18/ 18
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Mitică Craus
1/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Cuprins
Introducere
Algoritmii HCS şi SV
Algoritmul HCS modificat
Descriere
Pseudocod
Corectitudinea şi complexitatea
Implementare VLSI
Descriere
Pseudocod
Complexitatea
2/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Introducere
3/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
4/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
• O operaţie de agăţare constă ı̂n conectarea unei rădăcini i la un vârf j al unui alt
arbore. P[i] devine j şi astfel i este agaţat de vârful j. În cazul algoritmului HCS j
este tot radăcină.
• Fiecare conectare este realizată numai după ce algoritmul identifică o muchie ce
leagă un vârf din supervârful lui i cu un vârf al supervârfului lui j.
• O asemenea muchie se numeşte muchie de bază. Colecţia muchiilor de bază
formează o pădure de arbori parţiali (spanning forest) a grafului de intrare.
• Arborii asociaţi unui supervârf sunt obiectul unei operaţii de scurtcircuitare realizate
aplicând tehnica dublării:
for each i : i ∈ S {supervârf}
do in parallel if P[P[i]] 6= 0/ then P[i] ← P[P[i]]
• Operaţia de scurtcircuitare ı̂njumătăţeşte adâncimea arborelui.
• Scurtcircuitarea nu introduce circuite ı̂n graful pointer.
• Agăţările sunt calculate astfel ı̂ncât să nu introducă circuite ı̂n graful pointer.
5/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
• Fiecare muchie {k, l} din graful iniţial induce o muchie ce conectează supervârful ce
conţine k la supervı̂rful lui l.
• Graful format din mulţimea supervârfurilor şi mulţimea muchiilor induse se numeşte
graful supervârfurilor.
• Fiecare din cei doi algoritmi sfârşesc cu stele cu rădăcină ı̂n graful pointer, existând o
corespondenţă biunivocă ı̂ntre mulţimea stelelor şi mulţimea componentelor conexe.
6/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
8/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Exemplu de execuţie
9/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Corectitudinea
Lema (1)
Prin execuţia de operaţii de agăţare nu se produc circuite de lungime l > 2 ı̂n graful
pointer.
Demonstraţie.
Presupunem că ı̂n urma unei agăţări, ı̂n graful pointer se produce un circuit C de lungime l > 2.
Fie acesta (i1 , i2 , . . . , il , i1 ). Pentru secvenţa (ij , ij+1 , ij+2 ) ⊂ C rezultă ij > ij+2 (altfel ij+1 ar fi fost
agăţat de ij şi nu de ij+2 ).
In consecinţă:
a) l = 2k : i1 > i3 > . . . i2k−1 > i1 ; absurd.
b) l = 2k + 1 : i1 > i3 > · · · > i2k−1 > i2k+1 > i2 > i4 > · · · > i2k > i1 absurd.
Deci, presupunerea existenţei unui circuit C de lungime l > 2 este falsă.
Lema (2)
Un număr de log n scurtcircuitări sunt suficiente pentru a reduce un arbore cu rădăcină la
o stea cu rădăcină.
Demonstraţie.
Operaţiile de scurtcircuitare injumătăţesc adâncimea unui arbore cu rădăcină. Deci dupa log n
scutcircuitări adâncimea unui arbore devine 1.
10/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Corectitudinea - continuare
Lema (3)
Înaintea execuţiei operaţiilor de scurtcircuitare ı̂n algoritmul COMPONENTE CONEXE,
graful pointer este o pădure de arbori cu rădăcină.
Demonstraţie.
Procedăm prin inducţie după numărul de ordine i al iteraţiei (paşii 1-3). La ı̂nceputul iteraţiei 1
graful pointer conţine doar vârfuri izolate. Astfel, fiecare vârf are gradul exterior 0. Operaţia de
agătare a unui vârf produce creşterea cu o unitate a gradului exterior al acestuia. Prin urmare
gradele exterioare ale vârfurilor devin 1. Din Lema 1 rezultă ca prin agăţări nu se produc circuite
de lungime l > 2. La inceputul pasului 2 se elimină circuitele de lungime 2. Deci graful pointer
devine o pădure de arbori cu rădăcină. Cele log n scurtcircuitări efectuate ı̂n iteraţia 1, reduc
graful pointer la o mulţime de stele cu rădăcină (Lema 2). Deci, la inceputul iteraţiei, 2 graful
pointer conţine doar stele cu rădacină.
Presupunem acum că, la ı̂nceputul iteraţiei i, graful pointer conţine doar stele cu rădacină.
Astfel, fiecare vârf are gradul exterior 1. Operaţia de agătare a unei rădăcini nu produce
schimbarea gradului exterior al acesteia. Prin urmare gradele exterioare ale vârfurilor rămân 1.
Din Lema 1 rezultă ca prin agăţări nu se produc circuite de lungime l > 2. La inceputul pasului 2
al iteraţiei i se elimină circuitele de lungime 2. În consecintţă, graful pointer devine o pădure de
arbori cu radăcină. Ce log n scurtcircuitări efectuate ı̂n iteraţia i, reduc graful pointer la o
mulţime de stele cu rădăcină (Lema 2). Deci, la inceputul iteraţie i + 1 ,graful pointer conţine
doar stele cu rădacină.
11/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Corectitudinea - continuare
Teorema (1)
Algoritmul COMPONENTE CONEXE calculează componentele conexe ale unui graf G .
Demonstraţie.
Conceptual, intrarea ı̂ntr-o iteraţie următoare a algoritmului poate fi gândită ca fiind graful
supervârfurilor rezultate din iteraţia curentă. Într-un astfel de graf există un arc ı̂ntre
supervârfurile i şi j dacă există două vârfuri k şi l, astfel ı̂ncât SV [k] = i şi SV [l] = j şi A[k, l] = 1.
O iteraţie (formată din paşii 1-3 ai algoritmului COMPONENTE CONEXE) va reduce, de cel
puţin două ori, numărul de supervârfuri aflate ı̂n aceeaşi componetă conexă. Aceasta ı̂nseamnă
că după un număr finit de paşi graful supervârfurilor nu va mai suferi moficări, supervârfurile
devenind identice cu componentele conexe. Numărul maxim de iteraţii pentru a aduna vârfurile
unei componente conexe ı̂ntr-un singur supervârf este evident log n
12/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Complexitatea
Teorema (2)
Implementat pe o maşină PRAM-CREW, algoritmul COMPONENTE CONEXE
2
utilizează O(n2 / logn) unităţi
de procesare şi necesită O(log n) timp. Eficienţa
n+m
algoritmului este O n2 log n
.
Demonstraţie.
Evident, O(n2 ) unităţi de procesare sunt suficiente pentru execuţia tuturor paşilor paraleli ai
algoritmului COMPONENTE CONEXE. Deoarece cele O(n2 ) unităţi de procesare sunt necesare
ı̂n pasul 1, pentru calcularea celor n valori minime, dacă se foloseşte tehnica prefixelor pentru a
rezolva problema, numărul procesoarelor poate fi redus la O(n2 / log n). Algoritmul execută cel
mult log n iteraţii şi necesită O(log n) timp paralel ı̂n fiecare iteraţie. Deci, timpul paralel necesar
2
execuţiei algoritmului COMPONENTE CONEXE esteO(log n).
Ts O(n+m) n+m
Eficienţa E = p·T (p) = O(n2 / log n)·O(log2 n)
=O n2 log n
unde Ts este timpul secvenţial şi T (p) =
timpul paralel corespunzător execuţiei algoritmului COMPONENTE CONEXE pe o maşină
PRAM-CREW cu p unităţi de procesare.
13/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Descriere - continuare
• Arhitectura plase locale conectate prin arbori nu conţine un arbore separat pentru
fiecare linie (coloană), dar poate partaja un arbore pentru mai multe linii (coloane)
astfel ı̂ncât operaţiile O1 şi O2 să poată fi executate ı̂n timp logaritmic.
• Ideea de bază este de a permite pomparea valorilor din procesoarele liniilor
(coloanelor) ı̂n arborii cu frunzele = procesoarele (patratele albe) de interfaţare ale
plaselor locale (local meshes).
• De exemplu, pentru a calcula valorile minime pentru fiecare linie de procesoare din
reţeaua globală, se lucrează ı̂n paralel pe fiecare plasă locală.
• O linie de plase locale conţine un bloc format din blog nc linii globale, şi dispune de
un arbore conectat la plase prin procesoarele de interfaţare.
15/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Descriere - continuare
• Întı̂i se calculează valorile minime ce corespund porţiunilor din cele blog nc linii
globale, conţinute ı̂n plasele locale.
• Apoi cele dn/blog nce minime locale dintr-o linie globală sunt combinate prin
intermediul arborelui corespunzător plaselor locale care conţin linia respectivă.
• Prin pomparea ı̂n arborele asociat liniei de plase locale, mulţimi succesive de minime
locale pot fi combinate pentru obţinerea ı̂n secvenţă a valorilor minime
corespunzătoare liniilor reţelei globale, ı̂n timp paralel de complexitate O(log n).
• Aceasta se poate face deoarece plasele locale au dimensiuni blog nc × blog nc iar
arborele corespunzător unei linii de plaselor locale are adâncime blog nc.
• Minimul global al unei linii poate fi transmis ı̂napoi procesoarelor din plasele locale ı̂n
timp O(log n).
16/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Pseudocod
Notat,ii:
• A[1..n; 1..n]] este un tablou pătratic de dimensiune nxn.
Componente Conexe Vlsi Pasii 2 3(G )
• SV [1..n], P[1..n] sunt tablouri de dimensiune n. 1 / ∗ Pasul 2 ∗ /
Premise: 2 / ∗ Eliminarea circuitelor de lungime 2 ∗ /
3 for each j : 1 ≤ j ≤ n
•Iniţial procesoarele conţin ı̂n regiştrii de memorie matricea de 4 do in parallel pj,j transmite P[j] tuturor procesoarelor din coloana j
adiacenţă A[1..n, 1..n]. 5 for each i : 1 ≤ i ≤ n
•Vectorii SV şi P vor fi memoraţi ı̂n regiştrii procesoarelor de pe 6 do in parallel
diagonala principală. 7 pi,i cere lui pj,j , j = P[i], valoarea lui P[j]
Componente Conexe Vlsi(G ) 8 P2[i] ← P[j]
1 / ∗ Iniţializarea tabloului SV ∗ / 9 for each i : 1 ≤ i ≤ n
2 for eachi : 1 ≤ i ≤ n 10 do in parallel if P2[i] = i and i < P[i]
3 do in parallel SV [i] ← i 11 then P[i] ← i
4 repeat 12 / ∗ Execuţia a log n operaţii de scurtcircuitare ∗ /
5 / ∗ Pasul 1: Execuţia operaţiilor de agăţare ∗ / 13 / ∗ P[i] = P[P[i]] ∗ /
6 for each j : 1 ≤ j ≤ n 14 k ← 0
7 do in parallel pj,j transmite SV [j] tuturor procesoarelor din coloana j 15 while k ≤ log n
16 do for each j : 1 ≤ j ≤ n
8 for each i : 1 ≤ i ≤ n
17 do in parallel pj,j transmite P[j] tuturor procesoarelor din coloana j
9 do in parallel if {SV [j] / A[i, j] = 1, SV [j] 6= SV [i]} 6= 0/
10 then P[i] ← min {SV [j] / A[i, j] = 1, SV [j] 6= SV [i]} 18 for each i : 1 ≤ i ≤ n
1≤j≤n 19 do in parallel
11 else P[i] ← SV [i] 20 pi,i cere lui pi,j , j = P[i], valoarea lui P[j]
12 for each j : 1 ≤ j ≤ n 21 P[i] ← P[j]
13 do in parallel pj,j transmite P[j] şi SV [j] tuturor procesoarelor 22 k ← k +1
14 din coloana j 23 / ∗ Pasul 3 ∗ /
15 for each i : 1 ≤ i ≤ n 24 / ∗ Actualizarea mulţimii supervârfurilor ∗ /
16 do in parallel if {P[j] / SV [j] = i, P[j] 6= i} 6= 0/ 25 for each i : 1 ≤ i ≤ n
17 then B[i] ← min {P[j] / SV [j] = i, P[j] 6= i} 26 do in parallel if SV [i] = P[i]
1≤j≤n 27 then SV [i] ← 0
18 else B[i] ← SV [i] 28 else SV [i] ← 1
19 for each i : 1 ≤ i ≤ n 29 Stare Graf Pointer ← max{SV [i]/ i = 1, n}
20 do in parallel P[i] ← B[i] 30 for each i : 1 ≤ i ≤ n
21 Componente Conexe Vlsi Pasii 2 3(G) 31 do in parallel SV [i] ← P[i]
22 transmite Stare Graf Pointer tuturor procesoarelor
23 until Stare-Graf-Pointer = 0
18/ 19
Cuprins Introducere Algoritmii HCS şi SV Algoritmul HCS modificat Implementare VLSI
Complexitatea
Teorema (3)
Algoritmul COMPONENTE CONEXE VLSI rezolvă problema componentelor conexe ı̂n
timpul paralel T = O(log3 n) pe o arhitectură de tip plase locale conectate prin arbori.
Demonstraţie.
Timpul de execuţie al acestui algoritm este O(log n)· T(CC) unde T(CC) este timpul execuţiei
algoritmului COMPONENTE CONEXE.
Observaţie: Remarcabil pentru asemenea arhitecturi este faptul că aria chip-ului
A = O(n2 ).
19/ 19
Cuprins Arbori parţiali oarecare Algoritm pentru arbori parţiali oarecare
Mitică Craus
1/ 5
Cuprins Arbori parţiali oarecare Algoritm pentru arbori parţiali oarecare
Cuprins
2/ 5
Cuprins Arbori parţiali oarecare Algoritm pentru arbori parţiali oarecare
• Dat fiind un graf G = (V , E ), V = {1, 2, . . . , n}, problema arborilor parţiali constă ı̂n
determinarea unei păduri de arbori parţiali in G .
• Algoritmii de construcţie a unei păduri de arbori parţiali au la bază algoritmi pentru
determinarea componentelor conexe.
• Astfel, dacă se adaugă algoritmului HCS o procedură de identificare şi reţinere ı̂n
cursul unei operaţii de agăţare a muchiilor de bază, algoritmul obţinut rezolvă
problema arborilor parţiali.
3/ 5
Cuprins Arbori parţiali oarecare Algoritm pentru arbori parţiali oarecare
4/ 5
Cuprins Arbori parţiali oarecare Algoritm pentru arbori parţiali oarecare
5/ 5
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
Mitică Craus
1/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
Cuprins
2/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
• Notăm cu f (t) funcţia care descrie semnalul ı̂n domeniul timp şi cu F (ν) funcţia
care descrie semnalul ı̂n domeniul frecvenţei.
• Se poate trece dintr-o descriere ı̂n alta prin transformata Fourier.
• Trecerea din domeniul timp ı̂n domeniul frecvenţă se face prin transformata Fourier
directă: Z +∞
F (ν) = F [f (t)] = f (t)e −2πiνt dt, (1)
−∞
iar trecerea de la domeniul frecvenţă la domeniul timp se face prin transformata
Fourier inversă: Z +∞
f (t) = F −1 [F (ν)] = F (ν)e 2πiνt dν. (2)
−∞
3/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
• Notăm:
n−1 −2πijk
yj = ∑ xk e n . (4)
k=0
• Transformata Fourier discretă inversă este dată de relaţia:
4/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
obţinem
yn−j = X (ωj ), j = 0, 1, . . . , n − 1, (8)
unde am considerat yn = y0 .
5/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
Demonstraţie.
2πi(j+m) 2πij 2πim 2πij 2πi2m
2
Avem ωj+m = (e 2m )2 = (e 2m )2 (e 2m )2 = (e 2m )2 e 2m = ωj2 . Deoarece ωj şi
ωj+m sunt distincte, rezultă ωj = −ωj+m .
Lema (1)
Dacă n este par, n = 2m, şi 1 ≤ j < m, atunci ωj2 este de asemenea o rădăcină 6= 1.
Demonstraţie.
Deoarece ωjn = 1 rezultă (ωj2 )n = 1. Pe de altă parte,
2πij 2πi(j+j)
ωj2 = (e n )2 =e n = ωj+j 6= 1 pentru că 2 ≤ j + j ≤ n − 2.
6/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
n −1 n −1
2 2
X (ωj ) = ∑ x2m ωj2m + ∑ x2m+1 ωj2m+1
m=0 m=0 (9)
n −1 n −1
2 2
= ∑ x2m ωj2m + ωj ∑ x2m+1 ωj2m
m=0 m=0
7/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
X (z) = (x0 +x2 z 2 +· · ·+xn−2 z n−2 )+z(x1 +x3 z 2 +· · ·+xn−1 z n−2 ) = X 1(z)+zX 2(z),
(10)
unde X 1(z) şi X 2(z) sunt polinoame de grad n − 2, i.e., de grad mai mic cu 1 decât
cel al lui X (z).
• Evaluarea acestor polinoame se za face numai ı̂n punctele
ωm , m = 0, 1, . . . , n
2 −1 = 2
r −1 − 1.
şi
n
X 00 (z) = x1 + x3 z + x5 z 2 + · · · + xn−1 z 2 −1 (12)
pentru rădăcinile de ordinul n 2 ale unităţii.
• Notăm cu ωj0 , j = 0, 1, . . . , n − 1 aceste rădăcini.
2
• Se pune problema dacă putem calcula X (ωj ), utilizând X 0 (ωj0 ) şi X 00 (ωj0 ).
8/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
• Aceste relaţii arată că valorile X (ωj ) pot fi calculate dacă se cunosc X (ωj0 ) şi
X 00 (ωj0 ):
n
X (ωj ) = X 0 (ωj0 ) + ωj X 00 (ωj0 ), dacă j < (15)
2
şi
n
X (ωj ) = X 0 (ωj−n
0
) + ωj X 00 (ωj−n
0
), dacă j ≥ (16)
2
9/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
10/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
• În algoritmul de mai sus există dezavantajul că trebuie calculate atât rădăcinile
unităţii de ordinul n, cât şi cele de ordinul n
2.
• Acest dezavantaj poate fi eliminat dacă se schimbă instanţa problemei.
• Plecând de la observaţia că dacă se cunoaşte o rădăcină primitivă de ordinul n a lui
1, să zicem ω 6= 1, atunci celelalte rădăcini sunt puteri ale lui ω.
• Deci putem lua ωj = ω j .
• Instanţa problemei se modifică ı̂n felul următor: ı̂n loc să considerăm dat numai
polinomul X , presupunem date polinomul X de grad n − 1 şi o rădăcină primitivă de
ordinul n a unităţii.
• Ieşirea constă ı̂n determinarea valorilor X (ω 0 ), X (ω 1 ), X (ω 2 ), . . . , X (ω n−1 ).
• De asemenea, se ţine cont de faptul că dacă ω este o rădăcină primitivă de ordinul n
a unităţii, atunci ω 2 este o rădăcină primitivă de ordinul n
2 a unităţii.
11/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
Notat, ii:
• X este polinomul cu coeficienţii x0 , x1 , . . . , xn−1 .
• ω este o rădăcină de ordinul n a unităţii.
FFT Recursiv 2(X , n, ω)
1 if n = 1
2 then X (ω 0 ) ← x0
n
3 else X 0 ← x0 + x2 z + · · · + xn−2 z 2 −1
n
4 X 00 ← x1 + x3 z + · · · + xn−1 z 2 −1
5 FFT Recursiv 2(X , 2 , ω )0 n 2
12/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
Exemplu de execuţie
Exemplu de execuţie
X Y
Figura 3 : Implementare pe hipercub sau fluture - exemplu pentru n = 8
16/ 17
Cuprins Transformata Fourier discretă Algoritm Algoritm ı̂mbunătăţit Algoritmul Cooley-Tukey Comentarii bibliografice
Comentarii bibliografice
17/ 17
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Mitică Craus
1/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Alegerea liderului
Introducere
Alegerea liderului ı̂n reţele cu topologie de comuncare inel
Aspecte generale
Algoritm sincron de alegere a liderului ı̂n inele etichetate uniforme
Descriere
Pseudocod
Corectitudinea
Complexitatea
Algoritm sincron de alegere a liderului ı̂n inele etichetate neuniforme
Descriere
Algoritm asincron de alegere a liderului ı̂n inele etichetate uniforme
Descriere
Exemplu de execuţie
Pseudocod
Corectitudinea
Complexitatea
Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Algoritmul FloodMax sincron
Descriere
Pseudocod
Complexitatea
2/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Introducere
3/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
4/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
• Inel anonim:
• Unităt, ile de procesare nu au indentificatori.
• Au mecanisme identice pentru schimbarea
stărilor, adică funct, iile de tranzit, ie de stare sunt
identice.
• Sunt exprimate ı̂n termeni de stânga s, i dreapta.
• Inel etichetat:
• Fiecare unitate de procesare
pi , i ∈ {0, 1, . . . , n − 1} are asociat un
identificator unic idi
• Funct, iile de tranzit, ie de stare sunt diferite.
• Sunt identificate prin id-urile lor.
5/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
• Inel uniform:
• Unităt, ile de procesare au identificatori unici.
• Numarul nodurilor inelului (n) nu este cunoscut de către unităt, ile de procesare.
• Mecanismele de schimbare a stărilor nu depind de n (Funct, iile de tranzit, ie de stare nu
au variabila n ca parametru).
• Inel neuniform:
• Unităt, ile de procesare au identificatori unici.
• Numarul nodurilor inelului (n) este cunoscut de către unităt, ile de procesare.
• Mecanismele de schimbare a stărilor depind de n (Funct, iile de tranzit, ie de stare au
variabila n ca parametru).
6/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
7/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
8/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
9/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
• Startul nu este sincronizat. Aceasta ı̂nseamnă că unităt, ile de procesare se ”trezesc”
spontan sau după primirea unui mesaj, adică ı̂ncep execuţia programului de alegerea
a liderului ı̂n momente diferite.
• La trezire, dacă nu a primit nici un mesaj, unitatea de procesare devine participant;
dacă a primit un mesaj, devine releu.
• Atunci când o unitate de procesare cu rol de participant primes, te un mesaj de la pi ,
dacă id-ul primit este mai mare decât identificatorul cel mai mic cunoscut (inclusiv
propriul identificator), ı̂l ignoră; altfel, ı̂l reţine 2id − 1 runde.
• Atunci când o unitate de procesare cu rol de releu primes, te un mesaj de la pi , dacă
id-ul primit este mai mare decât identificatorul cel mai mic cunoscut (fără propriul
identificator), ı̂l ignoră; altfel, ı̂l retransmite imediat.
10/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Corectitudinea
Teorema (1)
Doar unitatea de procesare cu cel ai mic id primeşte inapoi propriul id.
Demonstraţie.
Fie pi unitatea de procesare participantă cu cel mai mic identificator (idi ). Cel put, in o unitate de
procesare are statut de participant. Evident, nici o unitate de procesare nu poate ”ı̂nghiţi”
(aruncă la cos, , fără a-l transmite mai departe) mesajul idi . Mai mult, mesajul idi . este ı̂ntârziat,
ı̂n fiecare unitate de procesare, cel mult 2idi runde. Să presupunem că există o unitate de
procesare pj , j 6= i, care primeşte ı̂napoi propriul identificator, idj . Rezulă că idj trece prin toate
unităţile de procesare din inel, inclusiv prin pi . Dar idi < idj şi pi este o unitate de procesare
participantă, care nu va retransmite idj . Contradict, ie.
12/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea
Mesajele care circulă prin inel pot fi clasificate ı̂n trei categorii:
1. mesaje ı̂n faza I (h = 1);
2. mesaje ı̂n faza II (h = 2) trimise ı̂nainte de intrarea mesajului liderului ı̂n faza II;
3. mesaje ı̂n faza II (h = 2) trimise după intrarea mesajului liderului ı̂n faza II.
4. mesaje ı̂n faza III (h = 3) trimise după ce a fost decis liderul.
Lema (1)
Numărul de mesaje din prima categorie este cel mult n.
Demonstraţie.
Este suficient să demonstrăm că fiecare unitate de procesare retransmite cel mult un mesaj din
prima categorie. Să presupunem că există o unitate de procesare pi care retransmite două mesaje
din prima categorie, idj primit de la pj şi idk de la pk . Fără a restrânge generalitatea, presupunem
că pj este mai aproape de pi decât pk . Dacă idk ajunge ı̂n pj după ce pj se ”trezeşte” şi trimite
pj , idk trece ı̂n faza II şi va fi ı̂ntârziat ı̂n fiecare unitate de procesare participantă 2idk runde;
altfel pj nu participă şi nu trimite identificatorul idj . Prin urmare, fie idk ajunge ı̂n pi ı̂n faza II,
fie idj nu este trimis de pj s, i prin urmare nu este primit de pi . Contradict, ie.
13/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea - continuare
Lema (2)
Fie r prima rundă ı̂n care se ”trezes, te” măcar o unitate de procesare s, i ı̂ncepe execut, ia
algoritmului. Fie pi una dintre acestea. Dacă unitatea de procesare pj este la distant, ă d
fat, ă de pi , atunci pj primes, te un mesaj din prima categorie cel mult ı̂n runda r + d.
Demonstraţie.
Induct, ie după d. Pentru d = 1 este evident că vecinul lui pi primes, te mesajul idi (din categoria 1)
ı̂n runda r + 1. Să presupunem că unitatea de procesare pk situată la distant, a d − 1 fat, ă de pi
primes, te un mesaj din prima categorie, cel mult ı̂n runda r + d − 1. Dacă aceasta este ” trezită”,
a trimis deja la vecinul pj un mesaj din prima categorie; altfel, ı̂nseamnă că pk are statut de releu
s, i va retransmite ı̂n runda r + d către pj mesajul de categoria 1, primit anterior.
14/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea - continuare
Lema (3)
Numărul de mesaje din categoria a doua este cel mult n.
Demonstraţie.
Din Lema 1 rezultă că fiecare unitate de procesare retransmite cel mult un mesaj din prima
categorie, adică pe o muchie este transmis cel mult un mesaj din prima categorie. Din Lema 2
rezultă ca ı̂n runda r + n pe fiecare muchie a fost trimis un mesaj din categoria 1. Rezultă că
după runda r + n nu va mai fi transmis nici un mesaj din categoria 1. Din Lema 2 rezultă că
mesajul liderului intră in faza a II-a după cel mult r + n runde, adică nu mai târziun de a n-a
rundă care urmează trezirii primei unităt, i de procesare. Rezultă că mesajele din categoria 2
circulă cel mult n runde. Un mesaj m aflat ı̂n faza a II-a este ı̂ntârziat 2m − 1 runde, după care
este retransmis. Prin urmare, un mesaj m circulă cu statutul ”categoria 2” cel mult de 2nm ori.
Deoarece mesajul care conţine cel mai mic identificator circulă de cele mai multe ori, rezultă că
numarul maxim de mesaje se obţine atunci când unităţile de procesare participante au
identificatorii 0, 1, . . . , n − 1. Dacă ţimem cont că mesajul liderului nu poate face parte din
categoria 2, rezultă că numărul mesajelor din categoria 2 este ∑n−1 n
i=1 2i ≤ n
15/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea - continuare
Lema (4)
Nici un mesaj nu este retransmis după ce liderul pi primes, te propriul identificator idi .
Demonstraţie.
Toate mesajele care urmează lui idi sunt ”ı̂nghit, ite”.
16/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea - continuare
Lema (5)
Numărul de mesaje din categoria a treia este cel mult 2n.
Demonstraţie.
Fie pi liderul şi pj o unitate de procesare cu statut de participant. Din Teorema 1 rezultă că
idi < idj . Din Lema 4 rezultă că nici un mesaj nu este retransmis după ce pi primes, te ı̂napoi
propriul identificator idi . Deoarece idi este ı̂ntârziat cel mult 2idi runde ı̂n fiecare unitate de
procesare, sunt necesare cel mult n2idi runde pentru ca pi să primească ı̂napoi propriul
identificator idi . Aşadar, mesajele din categoria a treia sunt transmise de-a lungul a cel mult n2idi
runde. În timpul acestor runde, idj este retransmis cel mult de id1 j n2idi = idjn−idi ori. Astfel,
2 2
numărul mesajelor din categoria 3 este cel mult ∑n−1 n
j=0 2idj −idi . Pe baza faptului că numărul maxim
de mesaje se obţine atunci când unităţile de procesare participante au identificatorii 0, 1, . . . , n − 1
(Lema 3) se deduce că ∑n−1 n n−1 n
j=0 idj −idi = ∑k=0 2k < 2n.
2
17/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea - continuare
Lema (6)
Numărul de mesaje din categoria a patra este n.
Demonstraţie.
Fiecare unitatea de procesare transmite mai departe mesajul liderului (h = 3), prin care acesta se
declară câs, tigător.
18/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea - continuare
Teorema (2)
Numărul de mesaje circulate prin algoritmul sincron de alegere a liderului ı̂n inele
etichetate uniformeste cel mult 5n.
Demonstraţie.
Consecinţă imediată a lemelor 1,3,5 şi 6.
19/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
• Algoritmul se desfăs, oară ı̂n faze. Fiecare fază este compusă din n runde.
• Startul este sincronizat. Aceasta ı̂nseamnă că toate unităt, ile de procesare se
”trezesc” simultan, adică ı̂ncep execuţia programului de alegerea a liderului ı̂n acelaşi
moment.
• Unitatea de procesare cu cel mai mic identificator este aleasă lider.
• În fiecare rundă, fiecare unitate de procesare efectuează următoarele operaţii:
• analizează mesajele primite pe canalele din stânga şi din dreapta;
• ı̂şi schimbă starea ı̂n funct, ie de starea curentă s, i de mesajele primite; dacă nu a primit
niciun mesaj, ı̂şi schimbă starea doar ı̂n funct, ie de starea curentă;
• transmite mesaje la vecini, dacă are ceva de transmis.
• În faza i, dacă nimeni nu este ales, atunci unitatea de procesare cu id-ul i se
autodeclară lider şi transmite la vecini un mesaj prin care se declară lider; celelalte
unităţi de procesare retransmit mesajul primit.
20/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
21/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
22/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Algoritmul LCR
Pseudocod pentru unitatea de procesare pi
23/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Corectitudinea
Teorema (3)
Doar unitatea de procesare cu cel mai mare id primeşte primeşte inapoi propriul id.
Demonstraţie.
Doar mesajul unităţii de procesare cu cel mai mare id nu va fi ”inghiţit” (aruncat la coş).
24/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea
Teorema (4)
Numărul de mesaje care circulă prin inel este cel mult n2 .
Demonstraţie.
Cazul cel mai nefavorabil este acela ı̂n care unităţile de procesare au identificatori din mulţimea
{0, 1, . . . , n − 1} şi sunt plasate pe inel ı̂n ordinea n − 1, n − 2, . . . , 0. În această situat, ie, mesajul
idi = i al unităt, ii de procesare pi este retransmis exact de i + 1 ori. Astfel, numărul mesajelor care
circulă prin inel (inclusiv mesajul de terminare) este n + ∑n−1 i=0 (i + 1) = O(n ).
2
25/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
26/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
• Notat, ii:
• idi reprezintă identificatorul unităt, ii
de procesare pi . FloodMax LE(G , d, pi , max idi , statuti )
• Ri memorează mesajele recepţionate 1 for runda ← 1 to d
de unitatea de procesare pi ı̂ntr-o 2 do for each (m) in Ri
rundă. 3 do if max idi < m
• max idi memorează cel mai mare 4 then max idi ← m
identificator cunoscut de pi .. 5 trimite max idi vecinilor
• statuti memorează starea finală a 6 if max idi = idi
unităt, ii de procesare pi (lider sau 7 then statuti ← lider
non lider ). 8 else statuti ← non − lider
• Premise:
• Init, ial max idi = idi s, i
statuti = necunoscut.
27/ 28
Introducere Alegerea liderului ı̂n reţele cu topologie de comuncare inel Alegerea liderului ı̂n reţele cu topologie de comunicare graf oarecare
Complexitatea
Teorema (5)
Numărul de mesaje circulă prin graf este 2d|E |.
Demonstraţie.
Într-o rundă, pe fiecare muchie circulă două mesaje. Numărul rundelor este d.
28/ 28
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Mitică Craus
1/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Cuprins
Introducere
Excluderea mutuală cu regiştri binari test&set
Descriere
Pseudocod
Excluderea mutuală cu regiştri read-modify-write
Descriere
Pseudocod
Excludere mutuală cu regiştri cu valori mărginite
Excludere mutuală cu regiştri cu valori mărginite, pentru două
unităţi de procesare, cu flămânzire
Descriere
Pseudocod
Excludere mutuală cu regiştri cu valori mărginite, pentru două
unităţi de procesare, fără flămânzire
Descriere
Pseudocod
2/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Introducere
3/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Introducere - continuare
4/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Un registru test&set memorează valori binare şi suportă două operaţii atomice, test&set
şi reset, definite astfel:
Notat, ii:
• r este un registru test&set.
Test&Set(r )
1 temp ← r
2 r ←1
3 return temp
Reset(r )
1 r ←0
5/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
6/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Notat, ii:
• r este un registru test&set.
Premise: Iniţial, r = 0
Pseudocod pentru unitatea de procesare pi , i ∈ {0, 1, . . . , n − 1}
hEntry i /* pi are nevoie de resursa critică*/
Entry(r )
1 asteapta pana cand Test&Set(r ) = 0
7/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
RMW(r , f )
1 v ←r
2 r ← f (v )
3 return v
• Fiecare unitate de procesare dispune de două variabile locale, pozitie şi coada.
• Algoritmul utilizează un registru r de tip read-modify-write, care memorează o
structură formată din două câmpuri: primul s, i ultimul.
• r .primul s, i r .ultimul conţin “bilete” pentru prima s, i respectiv pentru ultima unitate
de procesare din coadă.
• Atunci când o unitate de procesare ajunge ı̂n sectiunea de intrare, se ”as, ează” la
coada, prin asignarea valoarii lui r unei variabile locale s, i prin incrementarea lui
r .ultimul. Toate acestea sunt realizate printr-o singură operatie, indivizibilă.
• Valoarea curentă a lui r .ultimul ı̂ndeplines, te rolul de ”bilet” pentru unitatea de
procesare.
• O unitate de procesare asteaptă ı̂n sect, iuneade intrare pâna devine prima din coadă,
adică până când r .primul este egal cu biletul său. În acest moment, unitatea de
procesare intră ı̂n sect, iunea critică.
• După părăsirea sect, iunii critice, unitatea de procesare se autoelimină din coadă prin
incrementrea lui r .primul, permit, ând ı̂n acest fel urmatoarei unităt, i de procesare din
coadă să intre ı̂n sect, iunea critică.
9/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
10/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
11/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
12/ 14
Introducere Excluderea mutuală cu regiştri binari test&set Excluderea mutuală cu regiştri read-modify-write Excludere mutuală cu regiştri cu valori mărginite
Echilibrarea ı̂ncărcării
Mitică Craus
1/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
Cuprins
Introducere
Echilibrarea statică
Tipuri de echilibrare statică a ı̂ncărcării
Dezavantaje
Echilibrarea dinamică
Tipuri de echilibrare dinamică a ı̂ncărcări
Echilibrarea dinamică centralizată
Echilibrarea dinamică descentralizată
Echilibrarea dinamică prin metoda metoda iniţializării transferurilor de
task-uri de către transmiţător
Bibliografie
2/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
Introducere
3/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
• Round robin: Sunt transmite task-uri ı̂n ordinea secvenţială a unităţilor de procesare,
revenind la prima atunci când tuturor unităţilor de procesare li s-a acordat un task.
• Selecţia aleatorie: Sunt selectate unităţi de procesare la ı̂ntâmplare şi li se acordă
task-uri.
• Bisecţia recursivă: Problema este divizată ı̂n mod recursiv ı̂n subprobleme de efort
computaţional egal, minimizându-se ı̂n acelaşi timp transmiterea de mesaje.
• Tehnici bazate pe algoritmi genetici.
• Pentru unităţile de procesare interconectate cu o reţea de legături statice, task-urile
comunicante trebuie executate pe unităţi de procesare cu căi directe de comunicaţie
pentru a reduce ı̂ntârzierile; aceasta este un element esenţial al problemei mapării”
”
pentru astfel de sisteme.
• În general, maparea este o problemă din clasa problemelor NP-dificile, pentru care
nu există un algoritm de rezolvare cu un timp de execuţie polinomial. De aceea, de
multe ori se folosesc metode euristice pentru selecţia unităţilor de procesare.
4/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
Dezavantaje
• Este foarte dificil de estimat cu acurateţe timpii de execuţie ale diverselor părţi ale
unui program, fără executarea efectivă a acestora.
• Planificarea este de la ı̂nceput inexactă.
• Unele sisteme pot avea ı̂ntârzieri ı̂n comunicaţii care variază ı̂n funcţie de diverse
circumstanţe.
• Integrarea ı̂ntârzierilor variabile ı̂n echilibrarea statică a ı̂ncărcării poate fi foarte dificilă.
• Unii algoritmi au un număr de paşi care nu poate fi calculat ı̂n prealabil (de
exemplu, algoritmii bazaţi pe backtracking).
5/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
6/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
7/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
8/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
• Propus de Willebeek.
• Se presupune că ı̂ncărcările sunt infinit divizibile; ı̂ncărcarea unei unităţi de procesare
se poate reprezenta printr-un număr real.
• Presupunerea este aplicabilă ı̂n programele paralele care exploatează o granularitate
foarte fină.
• Pentru a fi extins ı̂n cazurile granularităţilor medii sau mari, algoritmul trebuie să poată
gestiona task-uri indivizibile, deci să reprezinte ı̂ncărcarea unui procesor printr-un
număr ı̂ntreg nenegativ.
10/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
• Fiecare unitate de procesare ı̂şi trimite informaţiile despre ı̂ncărcare către toţi vecinii
şi primeşte de asemenea informaţiile despre vecini.
• Fiecare unitate de procesare calculează ı̂ncărcarea medie a domeniului său, incluzând
ı̂ncărcările vecinilor şi cea proprie.
• Fie wi (t) numărul unităţilor de ı̂ncărcare ale unităţii de procesare i la momentul t.
Fiecare unitate de procesare memorează o estimare a ı̂ncărcării fiecărei unitate de
procesare vecină.
• Fie wij (t) estimarea ı̂ncărcării unităţii de procesare j păstrată ı̂n memoria unităţii de
procesare i la momentul t.
• Dacă unităţile de procesare i şi j nu sunt conectate direct, estimarea wij (t) = 0.
• Altfel, dacă unităţile de procesare i şi j sunt vecine, estimarea ı̂ncărcării se defineşte
astfel:
wij (t) = wj (τij (t))
unde τij este o variabilă ı̂ntreagă care satisface relaţia 0 ≤ τij (t) ≤ t.
11/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
13/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
• Porţiunea din excesul unităţii de procesare i care este atribuită vecinului j este:
dij+ (t)
(
dt , dacă dij (t) < 0
Pij =
0 , altfel
14/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
15/ 16
Introducere Echilibrarea statică Echilibrarea dinamică Bibliografie
Bibilografie
16/ 16
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Mitică Craus
1/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Maparea task-urilor
Introducere
Matricea ETC (Expected Time to Compute)
Euristici care asignează pe rând task-urile
Algoritmul Oportunistic Load Balancing - OLB
Algoritmul Minimum Execution Time - MET
Algoritmul Minimum Completion Time - MCT
Algoritmul de alternare (Switching Algorithm)
Algoritmul k-Percent Best - KPB
Euristici care consideră toate task-urile ı̂n procesul de mapare
Algoritmul Min-Min
Algoritmul Max-Min
Algoritmul Duplex
Algoritmul Genetic - GA
Algoritmul Simulated Annealing - SA
Algoritmul Genetic Simulated Annealing - GSA
Algoritmul A*
Compararea principalelor euristici de mapare a task-urilor
2/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Introducere
3/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
4/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
P1 P2 P3 P1 P2 P3
T1 1.9 5.9 2.3 T1 1.9 2.3 5.9
T2 5.1 7.9 5.4 T2 5.1 7.9 5.4
T3 2.1 3.1 2.8 T3 2.1 3.1 2.8
T4 2.3 4.4 4.3 T4 2.3 4.4 4.3
T5 1.1 3.5 1.5 T5 1.1 1.5 3.5
T6 7.4 7.6 7.5 T6 7.4 7.6 7.5
T7 5.9 6.7 6.4 T7 6.4 5.9 6.7
T8 2.6 3.9 3.8 T8 2.6 3.9 3.8
5/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
10 T1
3.1
2.6 T2
Tabela 3 : Exemplu de matrice ETC
unităţi de timp
T3
inconsistentă
5.9 T4
P1 P2 P3 T5
5 5.4
T1 2.3 5.9 1.9 T6
7.4
T2 5.4 7.9 5.1 1.5 T7
T3 3.1 2.8 2.1 T8
2.3 2.3
T4 4.4 2.3 4.3
T5 3.5 1.5 1.1 0
P1 P2 P3
T6 7.5 7.6 7.4
T7 6.4 5.9 6.7 unităţi de procesare
T8 3.9 3.8 2.6
Figura 1 : O posibilă mapare pentru matricea ETC
alăturată
6/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Cea mai simplă modalitate de a mapa task-urile este de a le asigna ı̂ntr-o anumită
ordine ţinând cont doar de task-urile care au fost asignate deja.
• Cele mai importante metode de mapare din această categorie sunt:
• Algoritmul Oportunistic Load Balancing - OLB
• Algoritmul Minimum Execution Time - MET
• Algoritmul Minimum Completion Time - MCT
• Algoritmul de alternare (Switching Algorithm)
• Algoritmul k-Percent Best - KPB
• Majoritatea acestor algoritmi de mapare au complexitatea timp O(nm), unde n
reprezintă numărul de task-uri, iar m numărul de unităţi de procesare.
7/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
8/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Fiecare task este asignat unităţii de procesare care are un timp minim estimat de
execuţie pentru task-ul respectiv, ignorând disponibilitatea unităţii.
• Dezavantajul constă ı̂n faptul că această metodă poate cauza dezechilibrări
semnificative ale ı̂ncărcării.
• Dacă există un grup de unităţi de procesare care execută toate task-urile ı̂ntr-un
timp mai scurt decât celelalte unităţi de procesare, atunci toate task-urile vor fi
asignate la unităţile din grupul respectiv; ceea ce ı̂nseamnă că celelalte unităţi de
procesare vor fi neutilizate.
• Complexitatea - este aceeaşi ca la algoritmul precedent (O(nm)) cu observaţia că,
pentru fiecare task, algoritmul MET calculează timpul minim de execuţie (care se
determină tot ı̂n O(m)).
9/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Fiecare task este asignat unităţii de procesare care are un timp minim estimat de
terminare a execuţiei pentru task-ul respectiv.
• Avantajul este combinarea precedentelor două metode prin evitarea situaţiilor ı̂n care
acestea dau rezultate nesatisfăcătoare.
• Dezavantajul constă ı̂n faptul că, ı̂n unele situaţii, task-urile sunt asignate la unităţi
de procesare care nu au un timp minim de execuţie.
• Complexitatea - este aceeaşi ca la algoritmii precedenţi (O(nm)) deoarece
complexitatea pentru determinarea timpului minim de terminare a execuţiei este
suma dintre calcularea timpului de terminare a execuţiei (O(1)) şi determinarea
minimului (O(m)), care este tot O(m).
10/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
11/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
12/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Algoritmul Min-Min
• Algoritmul Max-Min
• Algoritmul Duplex
• Algoritmul Genetic - GA
• Algoritmul Simulated Annealing - SA
• Algoritmul Genetic Simulated Annealing - GSA
• Algoritmul A*
13/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Algoritmul Min-Min
• Task-urile sunt asignate astfel ı̂ncât modificarea disponibilităţilor unităţilor de
procesare să fie minimă.
• Algoritmul este bazat pe metoda MCT şi consta ı̂n:
1. Calcularea timpilor estimaţi de terminare a execuţiei fiecărui task la fiecare unitate de
procesare;
2. Determinarea timpului minim pentru fiecare task;
3. Asignarea task-ului cu timpul minim din setul de task-uri la unitatea de procesare
corespunzătoare;
4. Înlăturarea din lista de task-uri de mapat a task-ului asignat şi repetarea paşilor până
când nu mai sunt task-uri de asignat.
• Euristica Min-Min asignează ı̂ntâi task-urile cu cel mai mic timp de execuţie la
unităţile de procesare care vor executa cel mai rapid task-urile.
• Complexitatea
• Fiecare iteraţie a algoritmului are complexitatea O(nm), care este dată de calcularea
timpilor estimaţi de terminare a execuţiei fiecărui task la fiecare unitate de procesare.
• Întrucât la fiecare iteraţie este asignat un task, complexitatea timp a algoritmului este
O(n) · O(nm), şi anume O(n2 m).
14/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Algoritmul Max-Min
• Acest algoritm este similar cu cel precedent cu menţiunea că la pasul al 3-lea este
asignat task-ul cu timpul maxim de terminare a execuţiei şi nu cu cel minim.
• Max-Min oferă rezultate mai bune decât Min-Min dacă avem task-uri cu timpi de
execuţie mai mari, deoarece, ı̂n cazul Min-Min, s-ar executa ı̂ntâi task-urile cu timpi
mai mici, iar când se execută cele cu timpi mari se poate ca unele unităţi de
procesare să stea ı̂n aşteptare mai mult ceea ce ar duce la o creştere a makesan-ului.
• Complexitatea - analog cu algoritmul Min-Min, complexitatea timp a algoritmului
Max-Min este O(n2 m).
15/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Algoritmul Duplex
• Întrucât ı̂n anumite situaţii algoritmul Min-Min produce soluţii mai bune, iar ı̂n altele
algoritmul Max-Min oferă rezultate mai satisfăcătoare, euristica Duplex utilizează cei
doi algoritmi şi alege soluţia cea mai bună dintre cele două.
• Dezavantajul constă ı̂n dublarea timpului de execuţie al algoritmului.
• Complexitatea - complexitatea timp este egală cu suma complexităţilor algoritmilor
Min-Min şi Max-Min şi este tot O(n2 m).
16/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Algoritmul Genetic - GA
• Algoritmii Genetici sunt folosiţi pentru căutarea ı̂n spaţiul soluţiilor, atunci când
acesta este foarte mare.
• Paşii unui algoritm genetic sunt următorii:
1. Generarea populaţiei iniţiale;
2. Evaluarea populaţiei;
3. Atâta timp cât nu este satisfăcută condiţia de oprire se urmează paşii:
3.1 Selectarea cromozomilor;
3.2 Aplicarea operatorului de ı̂ncrucişare;
3.3 Aplicarea operatorului de mutaţie;
3.4 Evaluarea cromozomilor şi determinarea noii populaţii.
17/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Algoritmii Genetici pot fi optimizaţi pentru a converge mai rapid către o soluţie
bună prin implementarea unor operatori de ı̂ncrucişare şi mutaţie orientaţi spre
ı̂mbunătăţirea soluţiei candidate.
• De asemenea, se poate obţine, ı̂ntr-un timp relativ mic, o soluţie acceptabilă dacă
un cromozom din populaţia iniţială este iniţializat cu soluţia obţinută prin execuţia
unei euristici de mapare mai ineficiente dar mult mai rapidă, cum ar fi: Min-Min,
Max-Min sau Duplex.
P1 P1 P1 P2 P2 P3 P2 P3
1 2 3 4 5 6 7 8
Figura 2 : Reprezentarea cromozomului algoritmului genetic pentru soluţia din Fig. 1
18/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Această tehnică iterativă consideră doar o singură soluţie posibilă pentru fiecare task
ı̂n parte, soluţia având aceeaşi reprezentare ca şi ı̂n cazul algoritmilor genetici.
• Algoritmul SA permite acceptarea unor soluţii mai puţin bune pentru a obţine un
spaţiu mai bun al soluţiilor, cu o probabilitate bazată pe o temperatură a sistemului
care descreşte la fiecare iteraţie cu o rată de răcire.
• Chiar dacă ı̂n general, acest algoritm este mai rapid decât GA, soluţiile găsite sunt
mai slabe decât Min-Min şi GA.
19/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
20/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
• Acest algoritm foloseşte tehnica GA, doar că ı̂n cazul procesului de selecţie GSA
foloseşte temperatura sistemului pentru acceptarea sau refuzarea unui cromozom
nou.
21/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Algoritmul A*
22/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
23/ 24
Introducere Euristici care asignează pe rând task-urile Euristici care consideră toate task-urile ı̂n procesul de mapare Compararea principalelor euristici de map
Bibliografie
Adrian Alexandrescu, Mitică Craus (prof. coord.). Applications of Artificial
Intelligence in Heterogeneous Computing Systems. Teză de doctorat, 2012.
Frederic Magoules, Jie Pan, Kiat-An Tan and Abhinit Kumar. Introduction to grid
computing. CRC Press, Inc., Boca Raton, FL, USA, 2009.
E. Ilavarasan and P. Thambidurai. Low Complexity Performance Effective Task
Scheduling Algorithm for Heterogeneous Computing Environments. Journal of
Computer Sciences, no. 3, pg. 94–103, 2007.
Tracy D. Braun, Howard Jay Siegel, Noah Beck, Lasislau L. Bölöni, Muthucumara
Maheswaran, Albert I. Reuther, James P. Robertson, Mitchell D. Theys, Bin Yao,
Debra Hensgen and Richard F. Freund. A comparison of eleven static heuristics for
mapping a class of independent tasks onto heterogeneous distributed computing
systems. J. Parallel Distrib. Comput., vol. 61, pg. 810–837, 2001.
Muthucumaru Maheswaran, Shoukat Ali, Howard Jay Siegel, Debra Hensgen and
Richard F. Freund. Dynamic mapping of a class of independent tasks onto
heterogeneous computing systems. J. Parallel Distrib. Comput., vol. 59, pg.
107–131, 1999.
24/ 24