Sunteți pe pagina 1din 57

Sistem de calcul paralel

Calculator paralel= N procesoare + retea de interconectare


Mem1 Mem2 Mem_M

Retea de interconectare

CPU1

CPU2

CPU_N

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

Sisteme SISD
Masina secventiala clasica, executa o singura instructiune la un moment dat Arhitectura Von Neuman

Unitate Control

Unitate Memorie Procesare Flux instructiuni Flux date

Sisteme SIMD
Unitate procesare Unitate Control (Program) Unitate procesare Memorie partajata sau Retea de interconect are

Unitate procesare

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 CM200)
procesoare vectoriale

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

Legea lui Amdahl


caz particular al principiului de mai sus
Pentru un sistem de calcul se consider dou rate de execuie: -rata de execuie superioar (sau paralel) RH; -rata de execuie inferioar (sau serial) RL. Dac f reprezint fracia rezultatelor generate cu rata RH i 1-f este fracia rezultatelor generate cu rata RL, ecuaia mediei armonice ponderate devine:

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

Retele cu topologie statica/dinamica

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)

Metrici ale retelelor


Diametrul:
Distanta maxima intre 2 noduri procesoare Distanta intre 2 noduri procesoare se defineste ca fiind calea cea mai scurta (in termenii numarului de legaturi directe) intre acestea De dorit sa fie cat mai mic

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

Latimea bisectiei (bisection width):


Numarul minim de legaturi care trebuie eliminate pentru a rupe reteaua in 2 jumatati egale (cvasi-egale daca reteaua are un numar impar de noduri) De dorit sa fie cat mai mare

Metrici ale retelelor (cont)


Latimea de banda a unui canal (channel bandwidth):
rata maxima de comunicare intre capetele unei legaturi directe

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

Metrici ale retelelor cazul retelelor dinamice


Diametrul:
distanta maxima intre doua noduri procesoare Aproximata prin distanta maxima intre oricare doua noduri (procesoare sau switch)

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 !)

Metrici ale retelelor cazul retelelor dinamice (cont)

Retea complet conectata si retea stea

Din: [Grama,Gupta,Kumar&Karypis]

Retea complet conectata


Fiecare procesor este conectat cu toate celelalte procesoare Diametrul = 1 Conectivitatea = p-1 Latimea bisectiei = p*p/4 Cost : Numarul de legaturi este proportional cu O(p*p) Complexitatea hardware nu permite realizarea acestui tip de retea pentru valori mari ale lui p Asemanatoare cu retelele crossbar (diferenta e ca legaturile aici sunt statice)

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

Masive de procesoare: lineare, bidimensionale, k-dimensionale


Linear: fiecare nod are 2 vecini cu care este conectat direct.
Daca sunt legate si nodurile de la extremitati, reteaua se numeste inel sau tor 1-D

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)

Retele arborescente (Tree-Based Networks)

Din: [Grama,Gupta,Kumar&Karypis]

Retele arborescente (cont)


Distanta maxima intre doua noduri este 2logp. Legaturile situate mai aproape de radacina au un trafic mai mare decat cele aflate mai aproape de baza Varianta de arbore gras (fat tree): legaturile mai aproape de radacina constau din mai multe canale de comunicare Topologiile arborescente sunt planare

Fat Trees

Din: [Grama,Gupta,Kumar&Karypis]

Costurile comunicarii prin transmitere de mesaje


Timpul de transmitere a unui mesaj intre 2 noduri in retea cuprinde: Timpul de initializare (Startup time ts): pregatirea mesajului pentru transmisie (header, coduri corectoare de erori), rutare. Apare o data per mesaj.

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.

Packet routing (cont)


Transmiterea unui mesaj de lungime m in retea In estimarea prezenta se presupune (simplificand!!) ca toate pachetele sunt rutate pe acelasi traseu Timp de startup tS Timpul de pachetizare = m tW1 Timpul de transmitere a unui cuvant tW2 Raportul informatia aditionala rezultata / informatia originala s/r tW=tW1+tW2(1+s/r) Timpul total de comunicare poate fi aproximat cu:

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

Cut-Through Routing (cont)


Timpul de comunicare a unui mesaj de lungime l:

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

Calculul timpului de comunicare


Datele problemei: mesaj de dimensiune m, trebuie sa traverseze l legaturi de la nodul sursa la nodul destinatie Timpul de comunicare depinde si de mecanismul de rutare Pentru cut-through routing (mecanism fara buffer-ari la nodurile intermediare):

Tcomm=ts+l*th+m*tw Valorile pentru ts, th, tw:


De obicei: ts >> tw , si

sunt constante determinate de caracteristicile hardware-ului si a protocoalelor de comunicatie

th neglijabil

Modelul liniar al costului comunicarii


Tcomm=ts+l*th+m*tw ts >> tw , si 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)

Tipuri de comunicatii prin mesaje


One to One Operatii de comunicatii colective:
One to All Broadcast All to One Reduction All to All Broadcast All to All Reduction All-Reduce &prefix Sum Scather and gather All to All Personalized Communication

Mai multe detalii: Cap 4 / [GGKK]

One-to-all Broadcast All-to-one Reduction

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)

Algoritmi pentru one-to-all broadcast


Pentru toate arhitecturile discutate, tiparul de comunicatii pentru one-to-all broadcast este similar(recursive doubling):
P procese => log p pasi, in fiecare pas au loc simultan mai multe comunicatii point-to-point

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)

Operatia all-to-one reduction se implementeaza in mod simetric

All-to-all broadcast si reduction


All-to-all broadcast:
Toate procesele realizeaza simultan un broadcast Fiecare proces i transmite acelasi bloc de date Mi celorlalte procese. Procese diferite pot transmite date diferite.

Din: [Grama,Gupta,Kumar&Karypis]

All-to-all broadcast si reduction (cont)


All-to-all reduction:
Fiecare nod e destinatia unui all-to-one reduction Fiecare nod i detine p mesaje, cate unul pentru fiecare nod destinatie; la nodul destinatie mesajele sunt insumate (sau alta operatie asociativa)

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)

All-to-all personalized communication


Fiecare nod are un mesaj distinct pentru fiecare alt nod Difera de all-to-all broadcast unde fiecare nod trimite acelasi mesaj tuturor celorlalte

Din: [Grama,Gupta,Kumar&Karypis]

Evaluarea performantelor sistemelor paralele Modele analitice si metrici


Metrici de performanta
Timpul de Executie Ts siTp Suprasarcina (Total parallel Overhead) To Accelerare (Speedup) S Eficienta E Cost

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.

Total parallel Overhead


Suprasarcina (Total paralell overhead) To= diferenta dintre timpul total de lucru insumat al tuturor procesoarelor si timpul necesar celui mai rapid algoritm secvential

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)

Exemplu de determinare a costului


Adunarea a n numere pe n procesoare Ts=O(n) TP=O(log n) Cost= TP * n =O(n log n) > O(Ts) Algoritmul nu este cost-optimal, utilizeaza prea multe procesoare

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

Exemplu: adunarea a n numere pe p procesoare, varianta 1


Cresterea granularitatii: p<n Exista algoritmul prezentat anterior, de adunare a n numere pe n procesoare, in log n pasi Cele n procese (procesoare virtuale) se mapeaza pe cele p procesoare fizice existente: procesul i se mapeaza pe procesorul [i mod p], datele se distribuie analog Fiecare din cele p procesoare fizice ruleaza n/p procese

Metrici ale performantei - rezumat


Metrica
Timp executie secventiala Timp executie paralela Accelerare Eficienta Cost Suprasarcina

Notatie/formula
Ts Tp S=Ts/Tp E=S/p Cost=p*Tp To=pTp-Ts

Semnificatie
Executia celui mai performant algoritm secvential

In general S<p In general E<1 Cost-optimal daca p*Tp=Ts

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

S-ar putea să vă placă și