Documente Academic
Documente Profesional
Documente Cultură
Retea de interconectare
CPU1
CPU2
CPU_N
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
Sisteme SISD
Masina secventiala clasica, executa o singura instructiune la un moment dat Arhitectura Von Neuman
Unitate Control
Sisteme SIMD
Unitate procesare Unitate Control (Program) Unitate procesare Memorie partajata sau Retea de interconect are
Unitate procesare
Sisteme MIMD
Unitate Control Unitate Control Unitate procesare Unitate procesare Memorie partajata sau Retea de interconect are
Unitate Control
Unitate procesare
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
Unitate procesare Memorie Unitate procesare Unitate Control Unitate Control Unitate Control
Unitate procesare
R( f )
f RH
1 1 RL
Retele de interconectare
Retelele de interconectare furnizeaza mecanismule de transfer de date intre procesoare sau intre procesoare si memorii Topologia retelelor de calculatoare:
Statica : legaturi directe(point-to-point) intre nodurle procesoare Dinamica : contin legaturi si elemente de comutare (switch) Un element de comutare (switch): set de porturi de intrare si porturi de iesire => gradul sau (numarul total de porturi) Costuri: costul unui switch creste cu patratul gradului sau Costul echipamentelor periferice este direct proportional cu gradul Costul impachetarii este direct proportional cu numarul de pini
Din: [Grama,Gupta,Kumar&Karypis]
Tipuri de topologii
Retea complet conectata (Completely connected) Retea stea Masiv linear (Linear array) Masiv bidimensional (2D mesh) Masiv k-dimensional (k-D mesh) Hipercub Retea arborescenta (Tree-Based network) Magistrala partajata (Bus-based) Retea crossbar Retea multietape (Multistage network)
Conectivitatea:
Numarul minim de drumuri diferite intre oricare 2 noduri Numarul minim de arce care trebuie inlaturate oentru a rupe reteaua in 2 retele deconectate De dorit sa fie cat mai mare
Bisection bandwidth:
Bisection bandwidth = bisection width * channel bandwidth De dorit sa fie cat mai mare
Cost:
numarul de legaturi De dorit sa fie cat mai mic
Conectivitatea
De nod: Numarul minim de noduri (switch-uri) care trebuie eliminate pentru a fragnenta reteaua De arc: Numarul minim de arce care trebuie eliminate pentru a fragmenta reteaua
Latimea bisectiei:
numarul minim de muchii care trebuie eliminate pentru a partitiona reteaua in doua jumatati cu acelasi numar de noduri procesoare (nodurile switch nu conteaza !)
Din: [Grama,Gupta,Kumar&Karypis]
Retea stea
Fiecare nod este conectat numai cu un nod comun (centrul) Diametrul = 2 (Distanta intre oricare doua noduri este O(1)) Conectivitatea = 1 Latimea bisectiei = 1 Cost = p-1 Nodul central este punctul slab al retelei Din acest punct de vedere, reteaua stea este asemanatoare cu magistrala comuna
Masiv 2-D (2D mesh)(grila 2-D): fiecare nod interior are 4 vecini (N, S, E, V)
Exista si varianta de grila periodica (tor) (wraparound mesh)
Masiv k-D: prin generalizare, fiecare nod are 2k dimensiuni Hipercub: caz special de masiv k-dimensional: K=log p, unde p este numarul total de noduri
Masive lineare
Din: [Grama,Gupta,Kumar&Karypis]
Masive 2- si 3-dimensionale
Din: [Grama,Gupta,Kumar&Karypis]
Hipercuburi
Din: [Grama,Gupta,Kumar&Karypis]
Hipercuburi (cont)
Distanta maxima intre 2 noduri este log p Fiecare nod are log p vecini Distanta intre 2 noduri este data de numarul de pozitii binare in care difera numerele nodurilor (dist Hamming)
Din: [Grama,Gupta,Kumar&Karypis]
Fat Trees
Din: [Grama,Gupta,Kumar&Karypis]
Timpul per-hop ( h): Timpul necesar header-ului mesajului sa ajunga la urmatorul nod, de care este direct conectat. Latenta nodului. Timpul de transfer al unui cuvant ( w): Timpul necesar transferarii unui cuvant intre 2 noduri direct conectate. Depinde de latimea de banda a conexiunii.
Store-and-Forward Routing
Un mesaj care urmeaza o cale cu mai multe legaturi: la fiecare nod intermediar, mesajul trebuie receptionat in intregime, stocat si abia apoi transmis mai departe Costul total de comunicare pentru un mesaj de dimensiune m pe l legaturi: De obicei valoarea th este neglijabila si expresia se poate aproxima prin:
Packet Routing
Rutarea Store-and-forward utilizeaza ineficient resursele retelei Packet routing: mesajul initial este impartit in pachete. Nodurile intermediare nu mai asteapta receptionarea intregului mesaj, ci doar a cate unui pachet. Avantaje: Utilizeaza mai bine resursele retelei, exista posibilitatea ca pachetele sa urmeze rute diferite, pierderile de pachete nnu de mesaje Dezavantaje: overhead mai mare deoarece fiecare pachet trebuie sa contine info de rutare, coduri detectoare de erori, info de secventa.
Cut-Through Routing
Unitatile transmise sunt pachete de dimensiune mica, fixa, denumite Flits (flow control digits) Dimensiunea mica a unui Flit => obligatia de minimizare a header-ului Toti Flit ai umui mesaj urmeaza acelasi traseu -> nu e nevoie ca fiecare flit sa contina in header info de rutare Exista un prim mesaj tracer care stabileste conexiunea Toti Flits ai unui mesaj sunt transmisi in secventa -> nu mai e necesar ca header-ul sa contina info de secventa Controlul erorilor se face per mesaj, nu per Flit Stabilirea dimensiunii optime a unui Flit:
Daca e prea mica pentru o latime de banda data => rata de transfer prea mare pentru viteza circuitelor hardware Daca e prea mare => buffere interne mari, creste latenta transmiterii mesajelor Implementari curente: valori intre 1-32 octeti
Imbunatatire fata de store-and-forward routing (twm nu se mai inmulteste cu l) Formula e aceeasi ca la packet routing, dar tW este mai mic in cazul cut-through
th neglijabil
Tcomm tw
Tcomm=ts+m*tw
ts
Acest model rezulta in durate egale pentru comunicarea Intre oricare doua noduri, indiferent de topologie (ca in cazul unei retele complet conectate)
One-to-all broadcast: Un procesor detine un bloc de date de dimensiune m care va fi transmis celor p procesoare All-to-one reduction: fiecare procesor detine cate un bloc de date. Acestea vor fi combinate utilizand un operator asociativ (ex: adunare, minim) iar rezultatul stocat la procesorul destinatie Implementarea eficienta a acestor operatii de comunicare depinde de topologia retelei (exemple: inel, masiv, hipercub)
Tinand cont de formula modelului liniar al timpului de comunicatie, timpul pentru one-to-all broadcast este: T one-to-all-broadcast=(ts+m*tw)*log p
Obs: fara utilizarea primitivei de tip one-to-all-broadcast, timpul de transmitere a p-1 mesaje independente este: Tmesaje-independente=(ts+m*tw)*(p-1)
Din: [Grama,Gupta,Kumar&Karypis]
Implementare cu utilizarea eficienta a linkurilor retelei: toate operatiile de broadcast se efectueaza simultan in stil pipeline, astfel incat toate mesajele care traverseaza acelasi link in acelasi timp sunt concatenate (creste lungimea mesajelor transmise). Algoritmii de implementare si performantele a acestui tip de comunicatie difera in functie de topologia retelei
All-reduce
Initial fiecare procesor detine cate un bloc de date de dimensiune m iar in final toate procesoarele detin un bloc identic de dimensiune m, obtinut prin combinarea celor p blocuri initiale printr-un operator asociativ Acelasi efect ca si o operatie de all-to-one reduction urmata de o operatie one-to-all broadcast. Implementarea mai eficienta insa foloseste insa un tipar de tip all-to-all broadcast ion care in loc de concatenarea mesajelor se face insumarea (combinarea) lor
Scatter si gather
Scatter: un nod trimite cate un mesaj de dimensiune m tuturor celorlalte noduri (comunicatie de tip oneto-all personalized communication) Gather: un nod colecteaza mesaje personalizate de la toate celelalte; este diferite de all-to-one reduction pentru ca NU combina mesajele ! Semantica lui scatter este total diferita de broadcast, dar implementarile sunt asemanatoare (la scatter lungimea mesajelor transmise scade pe masura ce nodurile de pe traseu receptioneaza datele care le sunt adresate)
Din: [Grama,Gupta,Kumar&Karypis]
Scalabilitatea
Legea lui Amdahl Izoeficienta Alte metrici de scalabilitate (scaled speedup)
Timpul de executie
Ts = Timpul de executie serial: timpul masurat de la inceputul si pana la sfarsitul executiei algoritmului pe un calculator secvential. TP= Timpul de executie paralel: timpul masurat de la inceputul executiei si pana la terminarea ultimului subtask paralel.
TO
p TP TS
Timpul total de lucru insumat al tuturor procesoarelor = p*TP = timpul de calcul + timpul de comunicare + timpul de inactivitate temporara cumulat pentru toate procesoarele
Accelerarea
De cate ori mai repede se rezolva o problema in paralel fata de cazul secvential ? Accelerarea (Speedup) = raportul dintre timpul necesar rezolvarii unei probleme pe un procesor si timpul necesar rezolvarii in paralel pe p procesoare identice
S este o metrica a performantei algoritmului si nu a calculatorului paralel Ts se refera la timpul de executie al celui mai bun algoritm secvential pentru respectiva problema
De exemplu, pentru un algoritm paralel de sortare, se va raporta timpul acestuia la timpul de executia al algoritmului Quicksort secvential, nu Bubblesort secvential !
T S T P
Valoarea accelerarii
Teoretic (ideal): accelerare liniara S=p De obicei in practica: Accelerare subliniara S < p (datorita overhead) Posibile anomalii: accelerare supraliniara S>p.
Cauze: imbunatatirea accesului la memorie prin partitionarea datelor de volum mare intre mai multe noduri; comportarea unor algoritmi pe cazuri particulare.
Eficienta
Eficienta utilizarii calculatorului paralel:
S p
E <=1, este 1 in cazul ideal S=p Exemplu: adunarea a n numere pe n procesoare: E=S/n=O(1/log n)
Cost
Cost = TP * p Costul reflecta timpul total de lucru insumat al tuturor procesoarelor E= Ts/Cost Algoritm paralel optimal in cost (cost-optimal): costul rezolvarii problemei cu ajutorul algoritmului paralel este egal cu timpul de executie al celui mai rapid algoritm secvential Cost=O(Ts(n)) Eficienta unui sistem cost-optimal este O(1)
Granularitatea
Granularitate = dimensiunea taskurilor in care e descompusa problema paralelizabila
Granularitate fina (fine-grained): numar mare de taskuri mici Granularitate mare (coarse-grained): numar redus de taskuri mari
Cresterea granularitatii (scaling down) (scaderea numarului de procesoare) poate ajuta la imbunatatirea metricii de cost
Notatie/formula
Ts Tp S=Ts/Tp E=S/p Cost=p*Tp To=pTp-Ts
Semnificatie
Executia celui mai performant algoritm secvential
Scalabilitate
Performanta unui sistem paralel depinde de dimensiunea problemei si de numarul de procesoare Ce se intampla daca:
Creste dimensiunea problemei Creste numarul de procesoare Cum si cu cat se modifica performantele ?
Cum se pot face extrapolari ale performantei pornind de la dimensiuni reduse ale problemei si dimensiuni reduse ale sistemului (nr procesoare) pentru dimensiuni mai mari ale problemei si nr mai mare de procesoare ?
Definitia scalabilitatii
Scalabilitate: pastrarea eficientei E constante prin cresterea simultana a dimensiunii problemei si numarului de procesoare Un sistem in care este posibil acest lucru se numeste scalabil Problema:
p creste la p Cat trebuie sa creasca n asffel incat E(n,p)=E(n,p)
Izoeficienta
Functia de izoeficienta: specifica rata de crestere a dimensiunii problemei necesara pentru a mentine constanta eficienta, odata cu cresterea numarului de procesoare
Sisteme nescalabile: nu se poate determina functia de izoeficienta (nu exista): eficienta nu poate fi mentinuta constanta la cresterea numarului de procesoare Sistem eficient scalabil: functie de izoeficienta mica: ex O(p): dimensiunea problemei trebuie sa creasca liniar cu numarul de procesoare Sistem greu scalabil: functie de izoeficienta mare: ex O(2^p): dimensiunea problemei trebuie sa creasca exponential cu numarul de procesoare