800 likes | 980 Views
1. NOŢIUNI INTRODUCTIVE DESPRE CALCULATOARELE PARALELE. 1.1 MASINI PARALELE SI MODELE DE PROGRAMARE 1.2 CLASIFICAREA CALCULATOARELOR PARALELE 1.3 TIPURI DE CALCULATOARE PARALELE 1.4 PERFORMANŢE ALE CALCULATOARELOR PARALELE 1.5 PROGRAME PARALELE.
E N D
1. NOŢIUNI INTRODUCTIVE DESPRE CALCULATOARELE PARALELE • 1.1 MASINI PARALELE SI MODELE DE PROGRAMARE • 1.2 CLASIFICAREA CALCULATOARELOR PARALELE • 1.3 TIPURI DE CALCULATOARE PARALELE • 1.4 PERFORMANŢE ALE CALCULATOARELOR PARALELE • 1.5 PROGRAME PARALELE
1.1 MASINI PARALELE SI MODELE DE PROGRAMARE Calculator paralel = colectie de elemente de prelucrare care comunica si coopereaza pentru rezolvarea rapida a unor probleme complexe. Comunicatie si cooperare: esentiale intr-o arhitectura paralela! => arhitectura comunicatiei
Exemplu de aplicatie paralela: calcularea sumei Solutia generala: n/p taskuri p procesoare (procese). Se disting doua seturi de date: -partajate: valorile A[i] si suma finala; -private: evalurile individuale de functii si sumele partiale
1) Modelul 1 de programare: spatiu partajat de adrese. Programul = colectie de fire de executie, fiecare avand un set de variabile private, iar impreuna partajeaza un alt set de variabile. Comunicatia dintre firele de executie: prin citirea/scrierea variabilelor partajate. Coordonarea firelor de executie prin operatii de sincronizare: indicatori (flags), zavoare (locks), semafoare.
Masina paralela corespunzatoare modelului 1: masina cu memorie partajata (sistemele multiprocesor, in primul rand sistemele multiprocesor simetrice sau SMP-Symmetric Multiprocessors). Exemple: sisteme de la Sun, DEC, Intel (Millennium), SGI Origin.
Variante ale acestui model: a) masina cu memorie partajata distribuita (logic partajata, dar fizic distribuita. Exemplu: SGI Origin (scalabila la cateva sute de procesoare). b) masina cu spatiu partajat de adrese (memoriile cache inlocuite cu memorii locale). Exemplu: Cray T3E.
Este necesara sincronizarea threadurilor pentru accesul la variabilele partajate ! Exemplu: prin excludere mutuala, folosind operatia de zavorare (lock):
2) Modelul 2 de programare: transfer de mesaje. Programul = colectie de procese, fiecare cu thread de control si spatiu local de adrese, variabile locale, variabile statice, blocuri comune. Comunicatia dintre procese: prin transfer explicit de date (perechi de operatii corespunzatoare send si receive la procesele sursa si respectiv destinatie). Datele partajate din punct de vedere logic sunt partitionate intre toate procesele. => asemanare cu programarea distribuita! Exista biblioteci standard (exemplu: MPI si PVM).
Masina corespunzatoare modelului 2 este multicalculatorul (sistem cu memorie distribuita): Exemple: Cray T3E (poate fi incadrat si in aceasta categorie), IBM SP2, NOW, Millenium.
O posibila solutie a problemei in cadrul modelului in transfer de mesaje (simplificand, se calculeaza suma s = f(A[1]) + f(A[2]) ): Procesor 1 Procesor 2 xlocal = f(A[1]) xlocal = f(A[2]) send xlocal, proc2 send xlocal, proc1 receive xremote, proc2 receive xremote, proc1 s = xlocal + xremote s = xlocal + xremote sau: Procesor 1 Procesor 2 xlocal = f(A[1]) xlocal = f(A[2]) send xlocal, proc2 receive xremote, proc1 receive xremote, proc2 send xlocal, proc1 s = xlocal + xremote s = xlocal + xremote
3) Modelul 3 de programare: paralelism al datelor. Thread singular secvential de control controleaza un set de operatii paralele aplicate intregii structuri de date, sau numai unui singur subset. Comunicatia: implicita, in modul de deplasare a datelor. Eficienta numai pentru anumite probleme (exemplu: prelucrari de tablouri)!
Masina corespunzatoare modelului 3: sistem SIMD - Single Instruction Multiple Data (numar mare de procesoare elementare comandate de un singur procesor de control, executand aceeasi instructiune, posibil anumite procesoare inactive la anumite momente de timp - la executia anumitor instructiuni). Exemple: CM2, MASPAR, sistemele sistolice VLSI Varianta: masina vectoriala (un singur procesor cu unitati functionale multiple, toate efectuand aceeasi operatie in acelasi moment de timp).
4) Modelul 4 de masina: cluster de SMP-urisau CLUMP (mai multe SMP-uri conectate intr-o retea). Fiecare SMP: sistem cu memorie partajata! Comunicatia intre SMP-uri: prin transfer de mesaje. Exemple: Millennium, IBM SPx, ASCI Red (Intel). Model de programare: se utilizeaza transferul de mesaje, chiar in interiorul SMP-urilor!
1.2 CLASIFICAREA CALCULATOARELOR PARALELE-SIMD (Single Instruction Multiple Data): -Procesoare matriciale; -Procesoare vectoriale; -Procesoare sistolice VLSI.-MIMD (Multiple Instruction Multiple Data): -Multiprocesoare (MIMD cu memorie partajată): -UMA (Uniform Memory Access): -UMA cu magistrale; -UMA cu comutatoare. -NUMA (Non-Uniform Memory Access): -CC-NUMA (Cache Coherent NUMA); -NC-NUMA (Non Coherent NUMA). -COMA (Cache Only Memory Access). -Multicalculatoare (MIMD cu transfer de mesaje): -MPP (Massively Parallel Processors): -MPP cu grilă; -MPP hipercub. -COW (Cluster Of Workstations).
1.3 TIPURI DE CALCULATOARE PARALELE • Calculatoare în bandă de asamblare • Calculatoare de masive • Sisteme multiprocesor • Calculatoare în flux de date • Sisteme sistolice VLSI
Calculatoare în bandă de asamblare Execuţia instrucţiunilor într-un calculator secveţial.
Procesor în bandă de asamblare Execuţia instrucţiunilor într-un calculator în bandă de asamblare.
Structura funcţională a unui calculator în bandă de asamblare.
Calculatoare de masive Structura funcţională a unui calculator de masive.
Sisteme multiprocesor Structura funcţională a unui sistem multiprocesor.
Calculatoare în flux de date Exemplu: se consideră calcularea expresiei:z = ( x + y ) * 2 . Graful şi şabloanele în flux de date.
Sisteme sistolice VLSI Exemplu: se consideră un sistem simplu pentru calcularea convoluţiilor, utilizând o reţea liniară de elemente de prelucrare: y(i) = w1*x(i)+ w2*x(i+1)+w3*x(i+2)+w4*x(i+3) Reţea liniară pentru calcularea convoluţiilor.
1.4 PERFORMANŢE ALE CALCULATOARELOR PARALELE • Masuratori de performanta • Factorul câştig de viteză • Principiul mediei armonice ponderate • Legea lui Amdahl • Limitări ale calculului paralel
Masuratori de performanta Gradul de paralelism DOP („degree of parallelism”) = numarul de procesoare dintr-un calculator paralel utilizate pe un anumit interval de timp. Profilul paralelismului = graficul DOP in functie de timp (pentru un anumit program). Depinde de: -structura algoritmului; -optimizarea programului; -utilizarea resurselor; -conditiile de rulare. Se considera un sistem paralel cu n procesoare identice.
Paralelism mediu Notatii: ∆ = capacitatea de calcul pentru un procesor, aproximat cu rata MIPS (million instructions per second): unde IC : numar instructiuni pentru program („instruction count”); T : timp de executie pentru program in secunde; f : frecventa ceasului in Hz, egala cu 1/τ (τ perioada ceasului in secunde); CPI : cicluri per instructiune (perioade de ceas necesare pentru executia unei instructiuni); C : numar de cicluri necesare pentru executia unui program. Au fost utilizate relatiile: Aproximarea ∆ cu rata MIPS sau rata Mflops nu tine seama de penalizarile datorate accesului la memorie, latenta comunicatiei, overhead-ul sistemului.
Volumul de lucru W („work”) este proportional cu aria de sub graficul profilului: iar in cazul discret: unde ti = timpul total cat DOP = i, iar (timpul total scurs). Paralelismul mediuA („average paralellism”):
Factorul câştig de viteză Definitie. Factorul câştig de viteză sau accelerare notat S(“speedup”) pentru un calculator paralel este raportul dntre timpii necesari pentru rezolvarea aceleiaşi probleme pe un sistem monoprocesor şi respectiv pe sistemul paralel. log2n< S <n/ln n log2n supoziţia lui Minsky. Limita superioarăn/ln n : -o problemă se rezolva pe un monoprocesor în unitatea de timp, T1=1; - fi probabilitatea de a asigna aceeaşi problemă la i procesoare, cu o încărcare medie di=1/i per procesor; -se presupun probabilităţi egale pentru fiecare mod de operare utilizând i procesoare, (fi=1/n pentru n moduri de operare, i=1,2,3,…,n);
-timpul mediu necesar pentru rezolvarea problemei pe un sistem cu n procesoare : -câştigul mediu de viteză S :
-volumul de lucru cu DOP =i: -timpul de executie al volumului Wipe un uniprocesor: - timpul de executie al volumului Wi pe k procesoare: -intr-un sistem cu numar infinit de procesoare:
-timpul de raspuns: => factorul asimptotic de accelerare S∞ :
Performanta medie aritmetica -se noteaza cu Ri ratele de executie ale programelor i = 1, 2, 3, ... , n. Rata medie aritmetica de executie: (s-a presupus ponderea 1/n pentru fiecare din cele n programe). -daca programele au ponderi cu o distributie oarecare π = { fi | i = 1, 2, ..., n}:
Performanta medie geometrica -rata de executie medie geometrica: -iar pentru o distributie a ponderilor π = { fi | i = 1, 2, ..., n}:
Rata de executie medie armonica -timpul mediu de executie per instructiune pentru programul i: -timpul mediu (aritmetic) de executie per instructiune: => rata de executie medie armonica este inversul timpului mediu: => rata de executie medie armonica ponderata pentru o distributie oarecare de ponderi π = { fi | i = 1, 2, ..., n}:
Principiul mediei armonice ponderate Fie Tn timpul necesar execuţiei a m taskuri de n tipuri diferite, fiecare tip constând din mi taskuri, necesitând ti secunde: Rata de execuţie R(numărul de evenimente sau operaţii în unitatea de timp): Se definesc fi ca fracţia de rezultate generate la rata Ri şi ti=1/Ri ca timpul necesar pentru generarea unui rezultat Rata globala a masinii:
Factorul de accelerare medie armonica Se presupune executia unui program (sau o incarcare cu mai multe programe) pe un sistem cu n procesoare. In diferite intervale de timp sistemul poate utiliza i=1, 2, ..., n procesoare (modul i cu i procesoare). -timpul secvential pe un uniprocesor cu R1 = 1: -timpul de executie cu i procesoare cu Ri = i, in cazul ideal: Programul este executat in n moduri de functionare cu o distributie a ponderilor π = { fi | i = 1, 2, ..., n}. => factorul de accelerare medie armonica: unde T* = 1/Rh* este timpul mediu armonic de executie pentru cele m moduri de executie.
Legea lui Amdahl caz particular al principiului de mai sus Pentru un sistem de calcul se consideră două rate de execuţie: -rata de execuţie superioară (sau paralelă) RH; -rata de execuţie inferioară (sau serială) RL. Dacă f reprezintă fracţia rezultatelor generate cu rata RH şi 1-f este fracţia rezultatelor generate cu rata RL, ecuaţia mediei armonice ponderate devine:
Se presupune Ri = i, π = (1-f, 0, 0, ..., 0, f). In ecuatia pentru Sh* se inlocuieste R1 = 1 si Rn= n: Consecinta: Sh* → 1/(1-f) pe masura ce n → ∞.
Eficienta, utilizarea si calitatea Se noteaza: O(n) = numarul de operatii unitare executate intr-un sistem cu n procesoare. T(n) = timp de executie (unitati de timp) in general O(n) > T(n). T(1) = O(1) intr-un uniprocesor. Se definesc: -factorul de accelerare: -eficienta: Deoarece 1≤S(n)≤n => 1/n≤E(n) ≤1. -redundanta: Evident 1≤R(n) ≤n.
-utilizarea: Sunt interesante urmatoarele relatii: 1/n≤E(n) ≤U(n) ≤1 1≤R(n) ≤1/E(n) ≤n -calitatea paralelismului: deoarece E(n) ≤1, 1≤R(n) ≤n => Q(n) este limitat superior de S(n).
In concluzie: -accelerarea indica castigul de viteza de calcul intr-un sistem paralel; -eficienta masoara partea utila a prelucrarii (lucrului) efectuate de n procesoare; -redundanta masoara dimensiunea cresterii incarcarii de lucru; -utilizarea indica gradul de utilizare a resurselor in timpul calculului paralel; -calitatea combina efectele accelerarii, eficientei si redundantei intr-o singura expresie pentru a evidentia meritul calcului paralel.
Limitări ale calculului paralel variabile: -ts = timpul de sincronizare; -t = timpul mediu de execuţie a unui task (granularitatea taskurilor); -to = overhead-ul taskurilor cauzat de execuţia paralelă; -N = numărul de taskuri executate între două puncte de sincronizare; -n = numărul de procesoare. Execuţia secvenţială a celor N taskuri, fiecare necesitând un timp t are loc într-un timp totalT1 = N t. Într-un sistem paralel: -fiecare task necesită (t+to) unităţi de timp, în loc de t. -N taskuri pe n procesoare număr paşi paraleli (raportul celular) = N/n. Timpul de execuţie paralelă:
Creşterea de viteză este: Mărireafactorului de accelerare: -efectul sincronizării ts/(Nt): -scăderea timpului de sincronizare ts; -creşterea produsului Nt(însemnând intervale mai largi între sincronizări). -efectul de overhead to/t,: -scăderea timpului de overhead to; -creşterea granularităţii t. -numărul de paşi de calcul N/n: -utilizând mai multe procesoare; -număr de taskuri multiplu al numărului de procesoare.
Eficienţa sistemului multiprocesor se defineşte prin relaţia: Limitările calculului paralel trecerea la limită în relaţiile pentru creşterea de viteză SN,n şi eficienţa EN,n. Rezultateleîn tabela:
1.5 PROGRAME PARALELE Cateva exemple de aplicatii complexe ale calculatoarelor paralele: -simularea curentilor oceanici (structura regulata si calcule stiintifice); -simularea evolutiei galaxiei (structura neregulata si calcule stiintifice); -generarea scenelor prin metoda „Ray Tracing” (aplicatie de grafica pe calculator cu structura neregulata); -Data Mining (structura neregulata).