Download presentation
Presentation is loading. Please wait.
1
Capitolul 4 - continuare Proiectarea algoritmilor paraleli Gestiunea taskurilor
2
Proiectarea algoritmilor paraleli
Notiuni de baza Dependenta de date, granularitate , concurenta, interactiuni, procese,procesoare Tehnici de descompunere Paralelizarea automata Recursiva, de date, exploratorie, speculativa, hibrida Gestiunea taskurilor paralele Caracteristiciale taskurilor: Generare, interactiuni Tehnici de mapare a taskurilor pe procesoare: statica, dinamica Metode de limitare a overhead Modele de algoritmi paraleli Data-paralel, task-graph, work pool, master-slave, pipeline, producer-consumer
3
Caracteristici ale taskurilor
Maniera de generare a taskurilor: Statica: toate taskurile sunt cunoscute inainte de inceperea executiei algoritmului; exemplu: problemele paralelizate prin descompunere de date genereaza static multimea de taskuri (inmultirea matricilor) Dinamica: taskurile si graful lor dedependenta nu sunt cunoscute inainte de executie. Sunt stabilite doar regulile de definire de noi taskuri; exemplu: problemele paralelizate prin descompunere recursiva pot genera taskuri dinamice (quicksort); Dimensiunea: timpul necesar realizarii taskului Taskuri uniforme = toate necesita aproximativ acelasi timp (exemplu: inmultirea matricilor) Taskuri neuniforme (exemplu: quicksort) Taskurile uniforme pot simplifica schemele de mapare Cunosterea dimensiunii taskurilor: uneori dimensiunea taskurilor este cunoscuta inainte de executie (inmultirea matricilor) alteori nu (puzzle – nu se stie nr de miscari pana la gasirea solutiei) Dimensiunea datelor asociate taskurilor
4
Caracteristici ale interactiunii taskurilor
Tipare statice/ tipare dinamice: Tipar de interactiuni statice: interactiunile se intampla la momente predefinite de timp si identitatea taskurilor care interactioneaza este cunoscuta Tipar de interactiuni dinamic: nu se cunoaste a priori momentul interactiunilor sau taskurile care interactioneaza Este mai dificil de programat in paradigma transmiterii de mesaje, trebuie utilizate operatii suplimentare de sincronizare sau interogare (polling) Exemplu: problema puzzle: initial, se genereaza un numar predefinit de stari pornind de la starea initiala si apoi se asigneaza fiecare din aceste stari ca stare de start pentru taskuri paralele. Este posibil ca anumite stari sa conduca rapid la dead end-uri de unde nu mai pot fi expandate, in timp ce expandarera starilor in celelalte taskuri continua. Taskurile care si-au epuizat lucrul atribuit ar putea prelua o stare inca neexpandata de la taskurile ocupate. Interactiunile implicate in transferul de sarcini intre taskuri sunt de tip dinamic.
5
Caracteristici ale interactiunii taskurilor (cont.)
Tipare regulate/tipare neregulate Tipar regulat = are o structura care poate fi exploatata pentru eficientizarea implementarii Read-only/read-write: partajarea de date intre taskuri: Read-only: taskurile concurente doar citesc date dintr-o structura comuna Read-write: taskurile concurente citesc si scriu date intr-o structura comuna One-way/two way: One-way interaction: un task initiaza interactiunea si o finalizeaza fara a intrerupe celalalt task ; Operatiile read-only sunt cazuri de interactiune one-way Interactiunile de tip one-way nu pot fi programate in acest fel in cazul paradigmei bazate pe transmitere ade mesaje (unde datele trebuie explicit trimise printr-un mesaj)
6
Exemple Se analizeaza caracteristicile taskurilor si interactiunilor lor pe exemple discutate anterior: Inmultirea matrice*matrice Puzzle Inmultirea matrice rara * vector Procesarea imaginilor
7
Exemplu – inmultirea matrice*matrice
Din: [Grama,Gupta,Kumar&Karypis]
8
Exemplu – inmultirea matrice*matrice
Descompunere de date Generarea taskurilor: statica – toate taskurile sunt cunoscute a priori Dimensiunea taskurilor – uniforma Cunoasterea dimensiunii taskurilor – dimensiunea fiecarui task este cunoscuta Interactiunea taskurilor: date comune (matricile care se inmultesc) in regim read-only Din: [Grama,Gupta,Kumar&Karypis]
9
Exemplu – puzzle Din: [Grama,Gupta,Kumar&Karypis]
10
Exemplu- puzzle Descompunere exploratorie
Solutie cu generarea statica a taskurilor: Un task cu rol de preprocesor genereaza un numar prestabilit de nivele de stari Fiecare stare de pe ultimul nivel este apoi folosita ca stare initiala pentru cate un task independent Solutie cu generarea dinamica a taskurilor: Fiecare task porneste de la o stare initiala si genereaza un numar prestabilit de nivele de stari urmatoare Pentru fiecare stare de pe ultimul nivel se genereaza un task similar de explorare; procesul se opreste cand se gaseste solutia Dimensiunea taskurilor: necunoscuta (nu se stie in cate mutari se gaseste solutia) Interactiunea taskurilor: poate fi dinamica: Daca un task termina explorarea subspatiului sau in timp ce alte taskuri inca mai lucreaza, acesta poate prelua o stare inca neexplorata de la unul din taskurile care lucreaza. Interactiunile necesare acestui transfer al sarcinii de lucru sunt de tip dinamic Optimizarea algoritmului – cautare euristica: starile intermediare care par sa fie mai aproape de solutie sunt expandate primele => coada bazata pe prioritati in care sunt pastrate starile intermediare care urmeaza sa fie expandate Coada este o structura partajata de taskuri in regim read-write.
11
Exemplu – inmultirea matrice rara * vector
Interactiunea taskurilor: forma neregulata
12
Exemplu – prelucrarea imaginilor
Din: [Grama,Gupta,Kumar&Karypis]
13
Tehnici de mapare a taskurilor
Obiectivele maparii: Reducerea timpului de interactiune intre procese Reducerea timpului de inactivitate (idle) Cele 2 obiective sint deseori in contradictie ! In continuare, obiectivele considerate sunt: Incarcarea echilibrata Minimizarea timpului de inactivitate Observatie: echilibrarea incarcarii nu e o conditie suficienta pentru reducerea timpului de inactivitate ! Exemplu: 12 taskuri , taskurile 9-12 depind de taskurile 1-8
14
Din: [Grama,Gupta,Kumar&Karypis]
15
Clasificarea tehnicilor de mapare
Mapare statica: taskurile sunt distribuite pe procese inainte de inceperea executiei Pentru o decizie optima de mapare: tb cunoscute dimensiunile taskurilor, dimensiunile datelor asociate taskurilor, caracteristicile interactiunilor intre taskuri Pt taskuri neuniforme: determinarea maparii optime este o problema NP-complete => se aplica euristici acceptabile Subcategorii: Tehnici bazate pe partitionarea datelor Tehnici bazate pe partitionarea taskurilor Mapare dinamica: taskurile sunt distribuite pe procese in timpul executiei algoritmului Singura posibilitate de mapare daca taskurile sunt generate dinamic Daca dimensiunile taskurilor sunt necunoscute -> maparea dinamica poate ajuta la echilibrarea incarcarii Tehnici centralizate Tehnici distribuite
16
Maparea statica bazata pe partitionarea datelor
Partitionarea datelor (tablouri, grafuri): taskurile sunt asociate cu parti ale datelor, pe baza regulii “owner-computes” Maparea datelor pe procese = maparea taskurilor pe procese Distributia pe blocuri Distributia unui tablou Se atribuie parti contigue, uniforme, diferitelor procese Partitionarea se poate face dupa o dimensiune sau dupa mai multe dimensiuni
17
Din: [Grama,Gupta,Kumar&Karypis]
18
Din: [Grama,Gupta,Kumar&Karypis]
19
Exemplu: inmultirea matricilor
C=A*B Partitionarea dupa rezultat C se imparte in p blocuri egale => p taskuri Dupa 1 dimensiune: fiecare task calculeaza n/p linii Dupa 2 dimensiuni: fiecare task calculeaza un bloc de dimensiune n/sqrt(p) * n/sqrt(p)
21
Exemplu: inmultirea matricilor
Comparatie mapari: Blocuri dupa 1 dimensiune: posibile maxim n taskuri Fiecare task are nevoie de n/p linii din A si intreaga matrice B n*n; total date = n*n+n*n/p Blocuri dupa 2 dimensiuni: posibile maxim n*n taskuri => grad mai mare de concurenta Fiecare task are nevoie de n/sqrt(p) linii din A si n/sqrt(p) coloane din B; total date = 2*n*n/sqrt(p) => un task are nevoie de mai putine date => mai putine interactiuni cu alte taskuri
22
Distributie ciclica si bloc-ciclica
Daca cantitatea de procesare depinde de pozitia in matrice, o distributie pe blocuri duce la o incarcare dezechilibrata 1 1 1 1 P0=4 P0=4 P1=10 4 4 1 1 P1=10 4 7 7 1 P2=19 P2=10 P3=29 7 8 1 4 P3=20
23
Distributie ciclica si bloc-ciclica
Matricea se partitioneaza in mai multe blocuri decat procese Blocurile se distribuie proceselor intr-o maniera round-robin, astfel incat fiecare proces primeste mai multe blocuri neadiacente 1 1 1 1 p0 p1 p0 p1 P0=10 P1=13 P2=13 P3=17 4 4 p2 p3 p2 p3 1 1 4 7 7 p1 p0 p1 1 p0 7 8 p2 p3 1 4 p2 p3
24
Distributie aleatoare de blocuri
Daca cantitatea de calcule necesare determinarii fiecarui element al rezultatului are o distributie spatiala speciala, distributia bloc-ciclica poate sa nu dea rezultate satisfacatoare
25
Distributie aleatoare de blocuri
Principiu: se partitioneaza datele intr-un numar de blocuri mai mare decat numarul proceselor Distributia blocurilor pe procese se face uniform dar aleator Vectorul V de lungimea numarului de blocuri de date, initial V[j]=j Elementele lui V se permuta aleator
26
Din: [Grama,Gupta,Kumar&Karypis]
27
Partitionarea de grafuri
Schemele de distributie prezentate pana acum se pot aplica in cazul unor algoritmi care utilizeaza structuri de date de tip matrici dense si in care taskurile interactioneaza dupa un tipar predefinit Probleme de tip simulare numerica a unor fenomene fizice: opereaza cu structuri de date neregulate sau rare, in care interactiunile depind de valorile datelor si sunt neregulate Exemplu: simularea difuzarii unei substante poluante in apa unui lac Suprafata lacului este modelata ca o retea neuniforma de elemente In fiecare punct al retelei se calculeaza valorile unor marimi, functie de valorile punctelor invecinate Cantitatea de calcule in fiecare pct este aceeasi => echilibrarea incarcarii se poate face asignand fiecarui proces un numar egal de puncte Fiecare punct trebuie sa comunice cu punctele vecine => o distributie aleatoare nu este buna Partitionarea ideala: partitionarea retelei in p parti astfel incat fiecare parte contine acelasi numar de puncte iar numarul de arce care unesc puncte apartinand unor partitii diferite este minim; problema NP complete; se utilizeaza euristici.
28
Din: [Grama,Gupta,Kumar&Karypis]
29
Din: [Grama,Gupta,Kumar&Karypis]
30
Din: [Grama,Gupta,Kumar&Karypis]
31
Maparea statica bazata pe partitionarea taskurilor
Daca problema se poate descrie printr-un graf static al taskurilor Partitionarea grafului taskurilor Exemple: Minimul dintre n numere Inmultirea matrice rara * vector
32
Din: [Grama,Gupta,Kumar&Karypis]
33
Din: [Grama,Gupta,Kumar&Karypis]
34
Din: [Grama,Gupta,Kumar&Karypis]
35
Maparea ierarhica Este posibil ca maparea exclusiv pe baza grafului dependentei taskurilor sa conduca la incarcari neechilibrate sau utilizarea nerationala a procesoarelor
36
Din: [Grama,Gupta,Kumar&Karypis]
37
Maparea dinamica Este necesara atunci cand maparea statica produce o distributie dezechilibrata sau cand graful dependentelor intre taskuri este dinamic Tehnici centralizate Tehnici distribuite
38
Tehnici centralizate de mapare dinamica
Exista un proces central sau o structura de date centrala unde sunt pastrate toate taskurile executabile Cand un proces a terminat un task curent, ia un nou task disponibil din structura centrala - self-scheduling Procesul central = proces master Procelele care depind de acesta ca sa primeasca taskuri = procese slave Dezavantaje: scalabilitate limitata -> cresterea numarului de procese poate duce la congestionarea accesului la structura centrala sau la procesul master Chunk scheduling: se asigneaza odata mai multe taskuri (chunk) in loc de un singur task Dezavantaje: prin dimensiune mare a chunk-urilor se poate ajunge la incarcare dezechilibrata; Pentru a corecta acest lucru, se poate scade progresiv dimensiunea chunk-urilor pe masura ce avanseaza executia
39
Tehnici distribuite de mapare dinamica
Multimea taskurilor executabile este distribuita intre mai multe procese Fiecare proces poate primi sau ceda taskuri in functie de incarcarea sa Mai dificil de implementat. Probleme critice: Cine stabileste perechile de procese care trimit-receptioneaza sarcini Cine initiaza transferul Cat de multe sarcini se transfera odata ?
40
Limitarea overhead-ului interactiunilor
Maximizarea localitatii datelor Minimizarea volumului schimbului de date Minimizarea frecventei interactiunilor Suprapunerea calculelor cu interactiunile Timpul petrecut de un proces asteptand sa primeasca date de la alt proces poate fi utilizat pentru calcule => interactiunile trebuie initiate suficient de devreme Minimizarea conflictelor de acces la date comune Utilizarea de primitive de interactiune colectiva optimizate
41
Minimizarea conflictelor de acces la date comune
Problema: mai multe taskuri incearca sa acceseze aceeasi resursa comuna in acelasi timp Exemplu: inmultirea a 2 matrici, varianta cu partitionare 2D P procese, mapare 1 task <-> 1 proces
42
Exemplu – evitarea conflictelor de acces la date comune
43
Utilizarea de primitive optimizate de interactiune colectiva
Interactiuni intre grupuri de taskuri Timpul de comunicatie intre 2 procese: T=ts+m*tw O interactiune colectiva intre p procese poate fi implementata mai eficient decat p comunicatii simple in serie ! Timpul pentru interactiunea colectiva depinde de topolgia retelei
44
Utilizarea de primitive optimizate de interactiune colectiva
Operatie Timp (topologie hipercub) One-to-all broadcast All-to-one reduction All-reduce (ts+m*tw)*log(p) All-to-all broadcast All-to-all reduction Scatter Gather ts* log(p) + tw*m*(p-1)
45
Capitolul 4 - continuare Proiectarea algoritmilor paraleli Modele de algoritmi paraleli
46
Modele de algoritmi paraleli
Model de algoritm paralel = combinatie: tip de partitionare + tehnica de mapare Paralelismul de date Tehnica ferma de procese (work-pool) Tehnica pipe-line
47
Paralelismul de date Aceeasi prelucrare efectuata concurent asupra unor seturi de date diferite Partitionare de date Mapare statica a taskurilor Gradul de paralelism creste de obicei odata cu cresterea dimensiunii problemei Exemplu: inmultirea matricilor
48
Tehnica work-pool Orice task poate fi executat de orice proces
“rezervor de taskuri” Mapare dinamica a taskurilor, avand in vedere echilibrarea incarcarii
49
Tehnica pipe-line Un flux de date trece printr-o succesiune de procese, fiecare proces executand un task specific Exemplu: ciurul lui Eratostene de eliminare a numerelor neprime: fiecare proces elimina multipli unui numar
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.