590 likes | 749 Vues
Algoritmi pentru calcul paralel. Curs 2007/2008 Conf.dr.ing. Ioana Ş ora E-mail: ioana@cs.utt.ro http://www.cs.utt.ro/~ioana. Continutul cursului. Introducere in calculul paralel. Scopul cursului. Concepte si notiuni. Modele de arhitecturi paralele;Clasificari; Modelul teoretic PRAM
E N D
Algoritmi pentru calcul paralel Curs 2007/2008 Conf.dr.ing. Ioana Şora E-mail: ioana@cs.utt.ro http://www.cs.utt.ro/~ioana
Continutul cursului • Introducere in calculul paralel. Scopul cursului. Concepte si notiuni. • Modele de arhitecturi paralele;Clasificari; Modelul teoretic PRAM • Aspecte hardware ale sistemelor paralele: retele de interconectare; comunicarea prin mesaje. • Metrici de performanta • Proiectarea algoritmilor paraleli • Exemple de algoritmi paraleli • Programarea sistemelor paralele cu transmitere de mesaje • Programarea sistemelor paralele cu spatiu de memorie comun
Bibliografie • A. Grama, A. Gupta, G. Karypis, V. Kumar: Introduction to Parallel Computing, Second Edition, 2003, AddisonWesley. • Ian Foster: Designing and Building Parallel Programs, 1995, Addison Wesley http://wotug.kent.ac.uk/parallel/books/addison-wesley/dbpp/ • Dana Petcu (@Universitatea de Vest Timisoara), Procesare paralela, Ed. Eubeea Timisoara, 2001 http://www.info.uvt.ro/~petcu • Curs: http://www.cs.utt.ro/~ioana • Laborator: as.ing. Cristina Marinescu http://www.cs.utt.ro/~cristina
Capitolul 1Introducere in calculul paralel. Scopul cursului. Concepte si notiuni.
Motivatie • “Mai repede, mai mult”
Axiomele puterii de calcul • Nu conteaza cat de rapid este calculatorul cel mai performant de la un moment dat, cineva va dori sa utilizeze unul mai rapid • Exista intotdeauna probleme importante care cer mai mult decat puterea de calcul disponibila la un moment dat • Cu cat puterea de calcul creste mai mult cu atat mai multe probleme nerezolvate apar la orizont
Cresterea vitezei de calcul, prin: • Cresterea performantelor procesoarelor secventiale: • Dezavantaje: cost mare al fabricarii unui procesor de inalta performanta, Limitari tehnologice la un moment dat • Paralelism in arhitecturi clasice: • Procesoare pipeline • Mai multe UAL • Coprocesoare specializate (matematice, grafice, I/O) • Calcul paralel: Utilizarea in paralel a mai multor CPU • Avantaje: cost - utilizarea mai multor procesoare ieftine fiecare in parte. • Dezavantaje: necesitatea de a dezvolta noi medii de lucru, noi algoritmi
Avantajele calculului paralel • “mai repede” • Exemplu problema: sortarea a 10 milioane de intregi • PC Pentium: 50 sec • CM5 cu 1024 procesoare: 0.2 sec • “mai mult” • Exemplu problema: inmultirea a 2 matrici de dimensiuni mari • PC cu memorie 512MB: dimensiune maxima a matricilor 8192*8192 (pentru elem de tip double – 8 octeti) • Paragon cu 1024 procesoare cu 64MB fiecare: dimensiune maxima a matricilor: 92000*92000
Modul de gandire paralel • Paralelizare: trecerea de la modul de gandire secvential la modul de gandire paralel • Exemplu problema: Distribuirea formularelor de examen intr-un amfiteatru cu N=100 studenti • Solutie secventiala: Instructorul ia teancul cu N formulare While (exista studenti nevizitati) { Viziteaza un student inca nevizitat Inmaneaza formular } Dezavantaj: durata mare de timp; studentii sunt in starea “idle” in tot acest interval
Modul de gandire paralel (cont) • Solutie paralela: instructorul inmaneaza teancul de formulare unui student; Acesta retine un formular si da teancul mai departe unui alt student • Instructorul: Viziteaza primul student; Inmaneaza teancul cu formulare; Prezinta explicatii; • Studentul: While (nu a primit inca teancul de formulare) Audiaza explicatiile instructorului; Retine un formular; If (exista un student care nu a primit formulare) inmaneaza teancul de formulare studentului;
Modul de gandire paralel (cont) • Solutie paralela 2: se poate imbunatati timpul daca instructorul inmaneaza o cate o parte parte din teancul de formulare(N/r) primului student din marginea celor r randuri. Fiecare student retine o copie si inmaneaza restul teancului studentului urmator de pe randul lui. • Dezavantajul solutiei: depinde de topologia amfiteatrului – presupune banci egale organizate pe randuri. • Ce se intampla daca amfiteatrul este unui semicircular ?
Modul de gandire paralel (cont) • Solutie paralela 3: pentru un amfiteatru de forma semicirculara:
Domenii de aplicatii • Aplicatii tipice: cele care necesita procesari complexe pe volum mare de date • Modelare si simulare: prognoza meteo, dinamica moleculara • Inteligenta artificiala: retele neuronale, cautare • Grafica • Multimedia, realitate virtuala, cinematografie • Motoare de cautare (ex: AltaVista – 10 procesoare)
Exemplu – prognoza meteo • Modelarea atmosferica: • Marimi caracteristice: {temperatura-1dimens, presiune-1dimens, umiditate-1dimens, vant-3dimensional}=6 valori • In functie de (longitudine, latitudine, altitudine, timp) • Problema: prezicerea valorilor acestor marimi la momentul T pornind de la valorile lor la momentul 0 • Evolutia acestor marimi e data de un set de ecuatii diferentiale
Exemplu- prognoza meteo (cont) • Comportamentul acestor ecuatii in spatiul continuu este aproximat prin comportamentul lor pe o multime finita de puncte echidistante din spatiu => metoda elementelor finite • Spatiul: aproximat cu suprafata desfasurata a pamantului * altitudinea maxima • Spatiul este descompus in celule 3-dimensionale de volum egal
Exemplu- prognoza meteo (cont) • Pentru fiecare celula de volum (punct pe grid) se retine un vector de 6 valori reprezentand marimile caracteristice • Problema: prezicerea valorilor acestor marimi la momentul T pornind de la valorile lor la momentul 0
Exemplu- prognoza meteo (cont) • Pentru fiecare punct de pe grid, valorile de la momentul t+1 sunt calculate pe baza valorilor vecinilor sai la momentul t • Calculul necesita T pasi, pentru t, 0<t<T
Exemplu- prognoza meteo (cont) • Numarul punctelor de pe grid: • supraf pamantului aprox 500 milioane km2 * altitudine 10 km • Consideram o celula de volum 1 km3 • => 5*10^9 celule (puncte pe grid) • Volumul de date: starea curenta a variabilelor = 6 valori reale * 8 octeti => 24*10^10 octeti • Calculul de actualizare a starii curente a variabilelor pentru un volum: aprox 500 instructiuni
Exemplu- prognoza meteo (cont) • Durata si acuratetea prezicerii: 2 zile, cu o acuratete de 30 minute => aprox 100 pasi de calcul • Numar total de instructiuni: 5*10^9*500*100=25*10^13 • Calculator secvential: aprox 10^9 instructiuni/sec => 25*10^4 sec = aprox 69 ore necesare pentru calculul secvential (… intervalul prognozei fiind de 48 de ore)
Ce este calculul paralel ? • Algoritm paralel = algoritm care permite efectuarea simultana a mai multor operatii • Descompunerea unei probleme in subprobleme care se executa in paralel pe mai multe procesoare • “Calculator paralel”= un set de procesoare capabile sa coopereze pentru rezolvarea unor probleme de calcul ([Foster]) • Supercalculatoare paralele, statii de lucru multiprocesor, retele de calculatoare, …
Concepte … concurent multiprogramare paralel multiprocesare distribuit
Programare paralela concurenta • Algoritm secvential: specifica executia secventiala a unui set de instructiuni • Proces: executia unui program secvential • Algoritm paralel: specifica mai multi algoritmi secventiali care pot fi executati simultan ca procese paralele (concurente) • Paralelism logic: 1 procesor – N procese. • La un moment dat se executa fizic o actiune corespunzatoare unui singur proces. • Procesele se desfasoara concurent: se lanseaza instructiunile unui proces inainte de a se fi terminat executia tuturor instructiunilor corespunzatoare celorlalte procese • Paralelism fizic: 1 procesor – 1 proces.
Paralelism logic si fizic Executia pe sistem cu 3 procesoare Paralelism fizic Multi-procesare Executia pe sistem cu 1 procesor Paralelism logic Multi-programare Specificarea unui program concurent, 3 procese 0 0 P0 P0 P2 P1 Proces P0 P1 P0 Proces P1 P2 P2 P0 P1 Proces P2 P2 T T
Domeniul calculului paralel • Arhitecturi • Limbaje: • Limbaje care contin constructii pentru a exprima concepte de programare paralela • Compilatoare: • compilatoare pentru limbaje paralele • Supercompilatoare: traslateaza cod secvential in cod paralel • Algoritmi: • Dezvoltarea unor noi algoritmi pentru noile arhitecturi paralele • Dezvoltarea de biblioteci • Aplicatii • Stiinta computationala – utilizarea calc pentru analiza problemelor stiintifice si ingineresti: dinamica fluidelor, stiinta materialelor, studiul atmosferei, biologie, economie, stiinte sociale
Scopul cursului • Proiectarea algoritmilor paraleli • Performantele algoritmilor paraleli
Proiectarea algoritmilor paraleli • Identificarea subtaskurilor care pot fi realizate in paralel • Maparea taskurilor pe mai multe procesoare • Impartirea si distribuirea datelor intre taskuri • Coordonarea activitatii si comunicarii intre procesoare
Performantele algoritmilor paraleli • Metrici: • Accelerarea obtinutat prin paralelizare (de cate ori ruleaza mai repede in paralel pe N procesoare fata de executia secventiala) • Eficienta – daca accelerarea este obtinuta cu un efort rezonabil din punct de vedere al resurselor (procesoarelor) aditionale • Maximizarea concurentei (cat mai multe operatii efectuate in paralel) • Minimizarea comunicarilor cauzate de • Date ne-locale • Transfer de rezultate intermediare intre procesoare • Sincronizarea intre procese • Distributia buna a datelor, pentru minimizarea comunicarilor • Echilibrarea incarcarii procesoarelor, pentru minimizarea timpilor de inactivitate
Sistem de calcul paralel “Calculator paralel”= N procesoare + retea de interconectare
Clasificari ale sistemelor paralele In functie de: • Mecanismul de control al paralelismului • Control centralizat / procesoare independente • Memorie : • Comuna • Distribuita • Cu spatiu de adrese comun • Fara spatiu de adrese comun • Modul de comunicare intre procesoare • Spatiu de adrese comun • Comunicare prin mesaje • Reteaua de interconectare • Magistrala • Retea de comunicare cu diverse topologii
Clasificarea dupa mecanismul de control • Controlul sistemului: • Centralizat (grupul de procesoare este condus de un controler) • Distribuit (fiecare procesor poate lucra independent) • Clasificarea Flynn: Dupa natura fluxului de instructiuni (numarul de unitati de control) si a fluxului de date (numarul de procesoare) • SISD: Single Instruction stream, Single Data stream • MISD: Multiple Instruction stream, Single Data stream • SIMD: Single Instruction stream, Multiple Data stream • MIMD: Multiple Instruction stream, Multiple Data stream
Potentialul claselor arhitecturale Flynn Dupa [Petcu]
Sisteme SISD • Masina secventiala clasica, executa o singura instructiune la un moment dat • Arhitectura Von Neuman
Sisteme SIMD (cont.) • 1 unitate de control, N procesoare (identice) • Unitatea de control transmite aceeasi instructiune la toate elementele de procesare • Fiecare instructiune este executata in acelasi timp (sincron) pe toate procesoarele • Utile pentru paralelismul datelor • De regula sistemele SIMD au memorie distribuita intre procesoare • Exemple: procesoare matriceale, masive de procesoare (Illiac IV, Connection Machine CM-200) • procesoare vectoriale
Procesor vectorial matriceal • Vectorial: contine o unitate functionala specializata care executa o instructiune pe o secventa de date • Matriceal: contine N procesoare + memorii si o unitate de control care transmite sincron instructiuni tuturor celor N procesoare
Sisteme MIMD • Cea mai generala arhitectura • Fiecare procesor are o unitate de control proprie • Procesoarele pot opera asincron (executa instructiuni diferite pe date diferite in acelasi timp) • Comunicarea: • Memorie partajata - > multiprocesoare (Cedar, Cray) • Retea de interconectare -> multicalculatoare (Paragon, nCUBE)
Sisteme MISD • N procesoare, N unitati de control (programe), 1 memorie comuna, 1 secventa de date • Categorie controversata: Nu exista in practica ! • Procesoare pipeline ar putea fi incadrate in aceasta categorie
Arhitecturi in practica Din: [Grama,Gupta,Kumar&Karypis]
Paradigme ale programarii paralele • Paralelismul de control • Operatii diferite se executa independent si asincron • MIMD, multi-threading • Paralelismul de date • Aceeasi operatie e efectuata in paralel pe seturi de date diferite • SPMD Single Program Multiple Data • Arhitecturi vectoriale, SIMD; si pe MIMD daca se incarca acelasi program in toate unitatile de control
Clasificarea dupa modul de comunicare intre procese • Spatiu de adrese de memorie comun: toate procesoarele acceseaza acelasi spatiu de adrese de memorie ( Obs: spatiu de adrese comun ≠ memorie fizica comuna) • POSIX threads • Comunicare prin mesaje: fiecare procesor are propriul spatiu de adrese • Biblioteci: PVM, MPI
Sisteme cu spatiu de adrese comun • Interactiunea intre procese: prin accesarea si modificarea de variabile comune • SPMD (Single program multiple data) • Memorii: • Locale • Globale • In functie de timpul de acces la memoriile locale/globale: • UMA (Uniform Memory Access) • NUMA (Non-Uniform Memory Access) • Daca accesul la memoria locala este mai rapid decat la memoria globala, algoritmii trebuie proiectati astfel incat sa tina cont de acest lucru in plasarea datelor
Sisteme cu spatiu de adrese comun - Analiza • Programarea este simplificata de spatiul de adrese comun • Probleme apar doar la asigurarea excluderii mutuale in cazul cand accesul simultan cuprinde si operatii de tip Write • Mecanisme de sincronizare: • Semafoare • Regiuni critice conditionale • Monitoare
Sisteme cu comunicare prin mesaje • Procesoarele comunica prin mesaje pentru a asigura transferuri de date si operatii de sincronizare • MIMD • Operatii: • Send mesaj to destinatie • Receive mesaj from sursa • Specificarea destinatiei/sursei unui mesaj: • Prin numirea directa a procesului emitator/ receptor • Printr-o cutie postala generala (Mailbox) • Prin specificarea canalelor de comunicatie