ebook img

CALCUL PARALEL Proiectare si dezvoltare formal˘aa programelor paralele PDF

317 Pages·2006·4.45 MB·Romanian
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview CALCUL PARALEL Proiectare si dezvoltare formal˘aa programelor paralele

Virginia Niculescu CALCUL PARALEL Proiectare ¸si dezvoltare formal˘a a programelor paralele 2005 ii blanc iii Familiei mele iv Cuprins Prefa¸t˘a ix I Fundamente 1 1 No¸tiuni generale 3 1.1 Clasific˘ari ale sistemelor paralele . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 Clasificarea lui Flynn . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 Alte clasificari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 Criterii de performan¸t˘a ale sistemelor paralele . . . . . . . . . . . . . . . 11 1.3 Re¸tele de interconectare a procesoarelor . . . . . . . . . . . . . . . . . . . 12 1.3.1 Topologii de baz˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.2 Problema includerii . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3.3 Comunica¸tiaˆın re¸tele . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4 Niveluri la care poate apare paralelism . . . . . . . . . . . . . . . . . . . 20 1.5 Clasificarea algoritmilor paraleli . . . . . . . . . . . . . . . . . . . . . . . 22 1.6 Modelul standard PRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.7 M˘asurarea performan¸tei algoritmilor paraleli . . . . . . . . . . . . . . . . 27 1.7.1 Complexitatea-timp . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.7.2 Accelera¸tia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.7.3 Eficien¸ta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.7.4 Costul ¸si volumul de lucru . . . . . . . . . . . . . . . . . . . . . . 32 1.7.5 Paralelism limitat ¸si nelimitat . . . . . . . . . . . . . . . . . . . . 33 1.7.6 Teorema lui Brent . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1.7.7 Clasa problemelor NC . . . . . . . . . . . . . . . . . . . . . . . . 37 2 Construc¸tia programelor paralele 39 2.1 Etapeˆın dezvoltarea programelor paralele . . . . . . . . . . . . . . . . . 40 2.1.1 Parti¸tionarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.1.2 Analiza comunica¸tiei . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.1.3 Aglomerarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.4 Maparea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 vi CUPRINS II Proiectare 49 3 Paradigme 51 3.1 Master/Slave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2 Work Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.3 Paralelism al datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.4 Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.5 Divide&impera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.6 Alte clasific˘ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4 Tehnici 57 4.1 Tehnica paraleliz˘arii directe . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2 Tehnica arbore binar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.3 Tehnica dubl˘arii recursive . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4 Contrac¸tia arborescent˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.5 Tehnica reducerii ciclice par-impar . . . . . . . . . . . . . . . . . . . . . 72 4.6 Tehnica divide&impera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.7 Algoritmii generici Ascend ¸si Descend . . . . . . . . . . . . . . . . . . 78 4.8 Tehnica calculului sistolic (pipeline) . . . . . . . . . . . . . . . . . . . . . 82 4.9 Tehnica par-impar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.10 Prefix paralel – Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 4.11 Branch-and-Bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.12 Adaptarea algoritmilor paraleli . . . . . . . . . . . . . . . . . . . . . . . 101 4.13 S¸abloane de programare (Skeletons) . . . . . . . . . . . . . . . . . . . . . 107 4.14 Cˆa¸tiva algoritmi paraleli remarcabili . . . . . . . . . . . . . . . . . . . . 108 4.14.1 Sortare bitonic˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 ˆ 4.14.2 Inmul¸tire matriceal˘a . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.15 Memorie partajat˘a versus memorie distribuit˘a . . . . . . . . . . . . . . . 115 4.15.1 Programare paralel˘a bazat˘a pe transmitere de mesaje . . . . . . . 115 4.15.2 Programare paralel˘a bazat˘a pe memorie partajat˘a . . . . . . . . . 120 4.15.3 Memorie partajata˘ distribuit˘a . . . . . . . . . . . . . . . . . . . . 121 III Dezvoltare formal˘a 123 5 Modelul UNITY 125 5.1 Prezentarea general˘a a teoriei . . . . . . . . . . . . . . . . . . . . . . . . 125 5.1.1 Separarea no¸tiunilor: programe ¸si implement˘ari . . . . . . . . . . 125 5.2 Nota¸tia programelor UNITY . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.2.1 Instruc¸tiunea de atribuire . . . . . . . . . . . . . . . . . . . . . . 126 5.2.2 Sec¸tiunea assign . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 5.2.3 Sec¸tiunea initially . . . . . . . . . . . . . . . . . . . . . . . . . . 128 5.2.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 5.2.5 Sec¸tiunea always . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 CUPRINS vii 5.3 Reguli de demonstrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.3.1 No¸tiuni de baz˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 5.3.2 Un model al execu¸tiei programului . . . . . . . . . . . . . . . . . 131 5.3.3 Concepte fundamentale . . . . . . . . . . . . . . . . . . . . . . . . 132 5.3.4 Un exemplu complet –ˆımp˘ar¸tireˆıntreag˘a . . . . . . . . . . . . . . 134 5.4 Maparea programelor pe arhitecturi . . . . . . . . . . . . . . . . . . . . . 138 5.5 Aplica¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.5.1 Eliminare Gauss-Jordan nedeterminist˘a . . . . . . . . . . . . . . . 138 5.5.2 Inversa unei matrice ¸si rezolvare de sistem liniar . . . . . . . . . . 142 ˆ 5.5.3 Inmul¸tirea matricelor booleene . . . . . . . . . . . . . . . . . . . . 144 6 Dezvoltare formal˘a din specifica¸tii 153 6.1 Descrierea metodei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.1.1 Construc¸tia programelor paralele . . . . . . . . . . . . . . . . . . 155 6.1.2 Specifica¸tii func¸tionale . . . . . . . . . . . . . . . . . . . . . . . . 155 6.1.3 Invarian¸ti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.1.4 Corectitudinea . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 6.1.5 Nota¸tia programelor . . . . . . . . . . . . . . . . . . . . . . . . . 158 6.1.6 Reguli de demonstrare . . . . . . . . . . . . . . . . . . . . . . . . 159 6.1.7 Procese de comunica¸tie . . . . . . . . . . . . . . . . . . . . . . . . 163 6.1.8 Complexitatea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 6.1.9 Regula ParSeq . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 6.2 Distribu¸tia datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 6.2.1 Distribu¸tii simple . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 6.2.2 Distribu¸tii multivoce . . . . . . . . . . . . . . . . . . . . . . . . . 175 6.3 Aplica¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 6.3.1 Opera¸tii prefix . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 ˆ 6.3.2 Inmul¸tire matriceal˘a . . . . . . . . . . . . . . . . . . . . . . . . . 182 6.3.3 Polinomul de interpolare Lagrange . . . . . . . . . . . . . . . . . 186 7 Formalismul Bird-Meertens – BMF 195 7.1 Omeomorfisme pe liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.1.1 Extragere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 7.1.2 Aproape-omeomorfisme . . . . . . . . . . . . . . . . . . . . . . . . 201 7.2 Implementare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 7.2.1 Sortare prin num˘arare . . . . . . . . . . . . . . . . . . . . . . . . 204 7.3 Tipuri de date categoriale . . . . . . . . . . . . . . . . . . . . . . . . . . 208 7.3.1 Tipul arbore binar omogen . . . . . . . . . . . . . . . . . . . . . . 210 8 Structuri de date pentru paralelism 213 8.1 Structuri de date PowerList . . . . . . . . . . . . . . . . . . . . . . . . . 214 8.1.1 Defini¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 8.1.2 Principiul induc¸tiei pentru PowerList . . . . . . . . . . . . . . . 216 8.1.3 Operatori, rela¸tii ¸si func¸tii . . . . . . . . . . . . . . . . . . . . . . 216 viii CUPRINS 8.1.4 Complexitatea func¸tiilor definite pe PowerList . . . . . . . . . . 218 8.1.5 Maparea pe hipercuburi . . . . . . . . . . . . . . . . . . . . . . . 219 8.1.6 Aplica¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 8.2 Structuri de date ParList . . . . . . . . . . . . . . . . . . . . . . . . . . 222 8.2.1 Defini¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 8.2.2 Un principiu al induc¸tiei pentru ParList . . . . . . . . . . . . . . 224 8.2.3 Operatori, rela¸tii ¸si func¸tii . . . . . . . . . . . . . . . . . . . . . . 226 8.2.4 Aplica¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 8.3 Structuri de date PList . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.3.1 Defini¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.3.2 Un principiu al induc¸tiei pentru PList . . . . . . . . . . . . . . . 232 8.3.3 Aplica¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 8.4 Transformarea Fourier rapid˘a . . . . . . . . . . . . . . . . . . . . . . . . 235 8.4.1 Cazul n=2k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 8.4.2 Cazul n prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 8.4.3 Cazul n = r r ...r . . . . . . . . . . . . . . . . . . . . . . . . . 238 1 2 p 8.5 Structuri de date n-dimensionale . . . . . . . . . . . . . . . . . . . . . . 241 8.5.1 Defini¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 8.5.2 Un principiu al induc¸tiei pentru PowerArray . . . . . . . . . . . 242 8.5.3 Operatori, rela¸tii ¸si func¸tii . . . . . . . . . . . . . . . . . . . . . . 243 8.5.4 Aplica¸tii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8.5.5 Evaluarea rela¸tiilor de recuren¸t˘a . . . . . . . . . . . . . . . . . . . 248 IV Modele 253 9 Modele de calcul paralel 255 9.1 Caracteristicile unui model de calcul paralel ideal . . . . . . . . . . . . . 255 9.2 Clasificarea modelelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 9.2.1 Paralelism implicit . . . . . . . . . . . . . . . . . . . . . . . . . . 263 9.2.2 Descompunere implicit˘a . . . . . . . . . . . . . . . . . . . . . . . 271 9.2.3 Descompunere explicit˘a . . . . . . . . . . . . . . . . . . . . . . . 274 9.2.4 Mapare explicit˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 9.2.5 Comunica¸tie explicit˘a . . . . . . . . . . . . . . . . . . . . . . . . . 279 9.2.6 Totul explicit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Anex˘a – No¸tiuni de teoria grafurilor 287 Bibliografie 290 Index 300 Prefa¸t˘a ˆ In timp ce multe probleme de mare interes practic cer tot mai mult˘a putere de calcul, viteza componentelor calculatoarelor se apropie de limitele posibile. Esteˆın general ac- ceptat¸si chiar dovedit faptul c˘a aceste probleme ce necesit˘a calcul intensiv nu vor putea fi rezolvate prin cre¸sterea continu˘a a performan¸telor calculatoarelor individuale, ci singura solu¸tie viabil˘a este folosirea calculului paralel. Ma¸sinile paralele, constˆand din mii de procesoare, ofer˘a o putere de calcul foarte mare pentru aplica¸tii complexe. Comunitatea poten¸tialilor utilizatori cre¸ste foarte puternic ¸si datorit˘a re¸telelor globale, care aduc hard, soft ¸si expertize din surse dispersate geogra- fic. Totu¸si, calculul paralel nu a devenit deocamdat˘a, o cale de rezolvare mai rapid˘a a problemelor, cu o foarte larg˘a r˘aspˆandire. ˆ In acest moment programarea paralel˘a este proiectat˘a,ˆın general, pentru tipuri spe- ciale de arhitecturi¸si de aceea mutarea unui program de pe o arhitectur˘a pe alta, necesit˘a rescrierea lui aproape ˆın ˆıntregime. Singura cale de a dep˘a¸si aceast˘a problem˘a ¸si de a folosi paralelismul pe scar˘a larg˘a, este de a distruge aceast˘a conexiune strˆans˘a dintre soft ¸si hard. Scopul principal al paralelismului este performan¸ta, dar aceasta esteˆın acela¸si timp ¸si sursa principal˘a a dificult˘a¸tilor legate de paralelism. Pentru a proiecta o solu¸tie paralel˘a eficient˘a, programatorul trebuie s˘a descompun˘a problemaˆıntr-o colec¸tie de procese care se pot executa simultan, s˘a mapeze procesele pe procesoarele disponibile, s˘a sincronizeze procesele, s˘a organizeze comunica¸tiile, etc. Pentru acestea s-au dezvoltat numeroase familii particulare de algoritmi, limbaje ¸si tehnici de implementare, pentru diferite tipuri de arhitecturi. Crizaprogram˘ariisecven¸tialeaeviden¸tiatnecesitateaabstractiz˘arii¸siascunderiideta- ˆ liilor nivelului de jos de programare. In programarea paralel˘a, necesitatea abstractiz˘arii este ¸si mai acut˘a, datorit˘a complexit˘a¸tii programelor paralele. Dac˘a programatorii de aplica¸tii, consider˘a abstractizarea foarte necesar˘a, totu¸si implementatorii programelor paralele sunt de p˘arere c˘a aceasta intr˘aˆın conflict cu performan¸ta. Reconcilierea dintre abstractizare ¸si performan¸t˘a, pare a fi calea prin care programarea paralel˘a s-ar putea impune mai multˆın viitor. ˆ In procesul de dezvoltare a unui program se pot identifica trei etape: Specificarea. Construirea formal˘a a unei descrieri a problemei care trebuie s˘a fie rezol- vat˘a. Aceast˘a descriere exprim˘a esen¸ta problemei. Specifica¸tia trebuie s˘a ajute la demonstrarea formal˘a a corectitudinii programului rezultatˆın final. ˘ x PREFAT¸A Figura 1: Rolul modeluluiˆın calculul paralel Proiectarea. Sarcina de a crea un “program”, care s˘a satisfac˘a specifica¸tia problemei ¸si care s˘a poate fi implementat eficient pe o arhitectur˘a ¸tint˘a. Implementarea. Maparea programului pe resursele de calcul disponibile pentru execu- ¸tia sa. Aceasta trebuie s˘a fie f˘acut˘a folosind instrumente ¸si tehnici, care au fost verificate formal. Proiectarea este o etap˘a fundamental˘a nu doar pentru aplica¸tiile de dimensiuni mari, dar ¸si ˆın cazul algoritmilor. Paradigme precum programarea structurat˘a, proiectarea “top-down” sau “bottom-up” sunt bine cunoscute. La nivel de algoritm, pentru pro- gramarea secven¸tial˘a, sunt de asemenea bine cunoscute tehnici de programare precum: greedy, backtraking, branch-and-bound, sau programarea dinamic˘a. Ele direc¸tioneaz˘a construc¸tia programelor, permit st˘apˆanirea complexit˘a¸tii oferind un cadru ¸stiin¸tific ¸si matematic ¸si, de asemenea, permit realizarea unor bune documenta¸tii. Pentruprogramareaparalel˘a, fazadeproiectareestepoatechiarmaiimportant˘adecˆat ˆın cazul program˘arii secven¸tiale, datorit˘a gradului ridicat al complexit˘a¸tii programelor paralele. Putem analiza, ¸siˆın acest caz, diferite paradigme consacrate, precum ¸si tehnici de programare care ghideaz˘a construc¸tia algoritmilor paraleli. ˆ Inprogramareasecven¸tial˘a, fazadeimplementareesterealizat˘adeobiceideuncompi- latorcapabils˘aproduc˘acodoptimizatpentruoarhitectur˘a¸tint˘a. Asemeneacompilatoare sunt posibile, deoarece majoritatea arhitecturilor secven¸tiale sunt similare la niveleˆınalte de abstractizare ¸si diferen¸tele de la nivelele de jos pot fi rezolvate de c˘atre compilator. ˆ In plus, datorit˘a arhitecturilor similare, limbajele de nivel ˆınalt pot fi proiectate, f˘ar˘a a sacrifica strategiile de compilare eficiente. Aceasta permite programatorilor de pro- grame secven¸tiale, luxul de a se concentra asupra corectitudinii ¸si complexit˘a¸tii abstracte a programelor, l˘asˆand compilatorului sarcina de a le implementa eficient ¸si corect. Arhitecturile paralele sunt foarte diferite unele de altele, chiar ¸si la nivele ˆınalte de abstractizare. O posibil˘a abordare este de a l˘asa limbajul s˘a reflecte particularit˘a¸tile arhitecturii – dar aceasta nu este totu¸si, o solu¸tie prea bun˘a. O alt˘a abordare ar fi de a face abstrac¸tie de considera¸tiile arhitecturale ¸si de a construi un limbaj de programare

Description:
Masinile paralele, constând din mii de procesoare, ofer˘a o putere de calcul foarte de programare care ghideaz˘a constructia algoritmilor paraleli.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.