Sunteți pe pagina 1din 13

SUBIECTE TEORIE

- Partitionarea problemei intr-un model de calcul paralel:


- definiti notiunile de sarcina, granularitate;
- potential de paralelizare;
- definiti notiunile de planificare (scheduling) si mapare (mapping)
Sarcina(task-urile) = task-urile sunt cele mai mici unitati de paralelism.
O sarcina poate implica accesul memoriei partajate sau poate executa o
operatie de tip message-passing.
Granularitate dimensiunea sarcinilor
Potential de paralelizare reflecta proprietatea inerenta a unui
algoritm de a putea fi divizat in sarcini;
Planificare (scheduling) procesele se desfasoara intr-o anumita ordine
ce poate fi specificata in cod, la compilare sau dynamic
Mapping atribuirea proceselor pe nodurile de calcul; de obicei o face
sistemul de operare, dar poate fi influentata de programator
Indicati diferenta intre sistemele de calcul cu memorie partajata si cele cu
memorie
distribuita.
Memorie partajata exista un spatiu comun de memorie pentru toate
procesoarele; se asociaza de obicei notiunea de fir de executie (thread); este
necesarea sincronizarea intre thread-uri intrucat acceseaza aceeasi
memorie;
Memorie distribuita memoria este accesibila unui singur procesor; se
asociaza de obicei notiunea de proces;
Definiti notiunea de speedup
Speedup raportul intre timpul de calcul serial si timpul de calcul paralel;
ideal este numarul de core-uri;
Descrieti paralelismul prin pipelining (consideram 4 etape fetch, decode,
execute,
write).
Paralelism prin pipelining:
- idea centrala: suprapunerea executiei intre diferite instructiuni
- executarea unei instructiuni contine mai multe etape:
(tipic 2-26 etape)
- fetch : extragerea instructiunii din memorie;
- decode: decodificarea instructiunii;
- execute: incarcarea operanzilor specificati si
executarea instructiunii;
- write: scrierea rezultatului;

Specificati clasificarea lui Flynn pentru sistemele paralele. Descrieti


arhitecturile de tip SISD, MISD, SIMD, MIMD.
Exista mai multe tipuri de clasificari
- dupa multiplicitatea sirului de instructiuni/date (Flynn);
- single instruction, single data (SISD)
- multiple instruction, single data (MISD)
- single instruction, multiple data (SIMD)
- multiple instruction, multiple data (MIMD)
SINGLE INSTRUCTION, SINGLE DATA (SISD)
- calculator serial
- Single instruction: o singura instructiune intr-un ciclu CPU
- Single data: un singur sir de date este folosit in oricare ciclu CPU
SINGLE INSTRUCTION, MULTIPLE DATA (SIMD)
- calculator paralel; aplicatii la procesare imaginilor
(unitati GPU);
- Single instruction: fiecare unitate de procesare executa
aceeasi instructione intr-un ciclu CPU
- Multiple data: fiecare unitate de procesare actioneaza asupra
unui elemnt diferit;
SINGLE INSTRUCTION, MULTIPLE DATA (SIMD)
- calculator paralel, rar intalnit, ne-comercial;
- posibile aplicatii: algoritmi de decriptare, aplicate pe un mesaj
codificat; filtru de frecvente, aplicat pe un semnal;
- Multiple instruction: fiecare unitate de procesare opereaza
independent;
- Single data: un singur sir de date este servit tuturor unitatilor
de procesare;
MULTIPLE INSTRUCTION, MULTIPLE DATA (MIMD)
- calculator paralel, cel mai des intalnit;
- Multiple instruction: fiecare unitate de procesare opereaza
independent;
- Single data: fiecare procesor lucreaza cu siruri de date diferite;

Retele de interconectare:

- tipuri de retele statice si dinamice;


- definiti diametrul, gradul unei retele, conectivitatea
nodurilor/conexiunilor;
Retele de interconectare - conexiune fizica intre diferitele componente ale
unui sistem paralel;
Retele statice:
- conecteaza nodurile direct;
- se mai numesc si retele indirecte, point-to-point networks
- nr de conexiuni poate varia (1-retea stea, nr. de noduri-graf
complet conectat)
Retele dinamice:
- conecteaza nodurile prin elemente de tip switch;
- se mai numesc si retele indirecte;
- exemple : - bus-based networks
- switching networks
Diametrul unei retele este distanta maxima dintre oricare pereche de noduri:
Gradul unei retele este gradul maxim al unui nod; - gradul unui nod este dat de
numarul de vecini;
Conectivitatea nodurilor si conexiunilor:
- masoara nr. de noduri sau laturi care ar trebui sa cedeze
pentru a avea o retea disconectata;
- o buna conectiviate indica o buna fiabilitate a retelei si
este de dorit;
Specificati proprietatile topologice ale unei retele de interconectare
eficiente
(diametru, gradul nodurilor, bisection bandwidth, conectivitate,
flexibilitate,
extensibilitate)
Sunt de dorit urmatoarele proprietati topologice :
- diametru mic distante mici pentru trnamsiterea mesajelor;
- gradul nodurilor cat mai mic se reduce incarcare harware a
nodurilor;
- bisection bandwidth cat mai mare rate de trasmisie mari;
- conectivitate mare asigura fiabilitatea retelei;
- flexiblitate mare;
- capacitate de extensibilitate catre un numar mai mare de
noduri;

Specificati proprietatile topologice in cazul retelelor de tip graf complet,


liniar, de
tip inel, matrice d-dimensionala.
Graf complet : fiecare nod este conectat cu oricare alt nod
- diametru = 1;
- grad = n 1;
- conectivitate nc = ec = n 1;
(pentru a delimita un nod trebuie indepartate n-1 laturi);
- bisection bandwidth = n*n/4;
(pentru a delimita graful in n/2+n/2 noduri se sterg n/2 laturi
comune pentru fiecare din cele n/2 noduri ale unui subset);
- toate celelalte tipuri de grafuri pot fi incluse in graful complet;
- din cauza gradului mare, in partica se foloseste un numar
redus de noduri;
Graf liniar : nodurile sunt aranjate in secventa
- diametru = n 1;
(maxim n-1 noduri trebuie traversate)
- grad = 2;
- conectivitate nc = ec = 1;
(pentru a delimita un nod trebuie indepartate o latura);
- bisection bandwidth = 1;
- un graf liniar poate fi inclus in aproape toate retelele standard,
cu exceptia retelelor de tip arbore;
- deoarece exista o singura conexiune intre doua noduri
adiacente, nu ofera o fiabilitate mare (no fault tolerance);
Retea tip inel : nodurile sunt aranjate pe un inel
- diametru = n/2; aici difera de reteaua liniara !
(maxim n-1 noduri trebuie traversate)
- grad = 2;
- conectivitate nc = ec = 2;
(pentru a delimita un nod trebuie indepartate o latura);
- bisection bandwidth = 2;
- se folosesc pentru un numar redus de procesoare in contextul
unor retele mai complexe;
Retea de tip matrice d-dimensionala : nodurile sunt aranjate
pe un grid d-dimensional
- presupunem o retea simetrica:
nj=r = ^d(sqrt(n));
diametrul: d * (^d(sqrt(n))-1);
grad = 2d;
conectivitate nc = ec = d;

Descrieti integrarea retelei de tip inel in reteaua de tip hyper-cub


Integrarea retelei de tip inel in
reteaua de tip hyper-cub
- consideram o retea de tip inel cu noduri
- graf V' ={1.n};
- dorim sa integram reteaua intr-un graf de tip cub k-dimensional
- graf V ={0,1}^k
- construim o functie bijectiva de la V' la V, asa incat toate laturile
din V' sa fie mapate pe hyper-cub;
- reflected binary code (Gray code) RGC : sir de secvente binare,
in care secventele difera printr-un singur bit;
-Ex : 000, 001, 011, 010, 110, 111, 101 etc.
Reflected Gray Code:
- cum construim secventele ?
- 1-bit RGC : 0, 1
- 2-bit RGC :
- inseram 0 si 1 in fata celor doua valori din 1-bit RGC
00, 01 si 10, 11
- schimbam in al doilea sir si concatenam sirurile
00, 01, 11, 10

Descrieti retelele de interconexiune dinamice (de tip bus, crossbar , multistage)


Se mai numesc si retele indirecte :
- procesoarele nu sunt conectate direct,
ci prin intermediul unor switch-uri;
- switch-urile pot fi configurate dinamic;
Retele de tip bus
- Principial, un bus este un set de conexiuni care pot transmite
date de la sursa la destinatar.
- doar un singur transport de date se poate efectua la un moment
dat bus-ul este utilizat in maniera time-sharing
- daca mai multe procesoare incearca sa trimita date in acelasi
timp, este utilizat un coordonator bus arbiter
- deoarece cu cresterea nr de procesoare, probabilitatea de
transmisie simultana creste in practica retelele de tip bus se
folosesc pentru un numar redus de procesoare.

Retele de tip crossbar

- O retea n x m de tip crossbar are n intrari si m iesiri;


- Pentru un sistem cu memorie partajata, intrarile pot fi
procesoare, iar iesirile module de memorie;
- In functie de cererea explicita al unui nod, switch-urile pot avea
doua valori : fara / cu schimbare de directie;
- se folosesc in retele cu un numar redus de porcesoare din cauza
overhead-ului hardware relativ mare.
Retele multi-stage
- Sunt retele constituite din mai multe trepte (formate din switch-uri)
interconectate;
- input : procesoare; output : procesoare (sisteme cu memorie
distribuita) sau module de memorie (sisteme cu memorie partajata)
- Regular multistage networks:
- acelasi numar de intrari si iesiri la toate switch-urile;
- de obicei switch-urile sunt retele crossbar a x b;Retele multi-stage
- Retele multi-stage populare:
- omega network;
- baseline network;
- butterfly network;
- Aceste retele folosesc switch-uri crossbar 2x2, aranjate in log(n)
trepte, unde n este numarul de conexiuni intre trepte;
- Fiecare switch se poate gasi in una sin urmatoarele stari:
---------Sau in X sau ambele la una sau ambele la alta.
Clasificarea algoritmilor de rutare
- minimali / non-minimali
- determinisitici / adaptativi
Din punctul de vedere al lungimii caii:
- minimali / non-minimali;
- minimal : alege intotdeauna calea cea mai scurta
situatii de congestie a retelei
- Algoritmi de rutare deterministici / adaptativi
- deterministic : - depinde doar de nodul sursa si nodul
destinatie;
- nu depinde de incarcarea retelei;
poate conduce la incarcare inegala a retelei;
- Exemplu: dimension-order routing, in cazul
retelelor de tip matrice, tor, hypercub;
- adaptativ : - selecteaza ruta pe baza incarcarii retelei
- fault tolerant ! Exista mai multe cai de
comunicare in cazul in care apar probleme
hardware;
Exemplu de situatie de deadlock la rutare
Algoritmi de rutare. Deadlocks.
- De obicei se intampla ca mesaje multiple sa fie transmise in

acelasi timp;
- Exemplu de deadlock:
- conexiunile suporta un singur mesaj;
- se transmiste un mesaj A-B-C si un mesaj C-B-A;
- conexiunile pot fi deblocate doar cand conexiunea urmatoare
este libera;
- intrucat A-B este blocat de mesajul 1 si C-B de mesajul 2
deadlock
- pot apare situatii de deadlock
- prin limitarea bufferelor (input/output)
- succesiune nepotrivita de operatii SEND / RECEIVE
Descrieti paralelismul la nivel de instructiune, precizand dependintele
posibile intre
date ( flow, anti-, output dependency).
Paralelism la nivel de instructiune:
- instructiunile multiple pot fi efectuate in paralel daca sunt
independente;
- pot exista insa dependinte intre date (de la I1 la I2):
- flow dependency: I1 calculeaza o caloare intr-un registru sau
variabila, care apoi este folosita de I2 ca operand;
- anti-dependency: I1 foloseste o variabila ca operand, care
este folosita apoi de I2 pentru a stoca rezultatul calculului;
- output dependency: I1 si I2 folosesc acelasi registru pentru
a stoca rezultatul unui calcul;

Descrieti tipurile de paralelism implicit si explicit


Tipuri de paralelism - clasificate dupa modul in care este
specificat paralelismul in cod:
- implicit : codul sursa nu prezinta instructiuni suplimentare;

compilatorul genereaza un program paralel.


- explicit : efort mai mare pentru programator, compilatorul este mai
simplu.
Paralelism implicit:
- effort minim din partea programatorului, care elaboreaza un cod
secvential;
- doua abordari:
- paralelizare automata (compilatoare care paralelizeaza)
- compilatorul analizeaza dependintele;
- sunt distribuite sarcinile pe procesoare, avand in vedere
o incarcare cat mai uniforma;
- in cazul sistemelor cu memorie distribuita se are in vedere
limitarea comunicarii;
- dezavantaje: codurile care se bazeaza pe pointeri
greu de paralelizat, timpul alocat buclelor cu limite
necunoscute greu de apreciat.
Paralelism implicit:
- doua abordari:
- limbaje de programare functionale
- reprezinta un stil de programare care se bazeaza pe
evaluarea functiilor matematice fara efecte secundare
(side effects)
- astfel, o functie cu aceeasi parametrii de intrare va returna
aceeasi valoare (nu se modifac varibile globale, definite
static);
- se pot folosi functii de ordin superior;
- exemplu de limbaj de programare: Haskell
- potential de paralelizare: variabilele de intrare pot fi
evaluate in paralel (nu exista efecte secundare);
Paralelism explicit cu distributie explicita:
- o clasa intermediara de modele de programare paralela;
- presupune reprezentarea explicita a paralelismului in program,
dar nu si distribuirea explicita pe procese;
- ex. : bucle for paralel
- OpenMP (open multi processing);
- High Performance Fortran (HPF);

Descrieti conceptul de fork-join pentru procese / thread-uri;


Fork-Join:
- concept simplu de creeare a thread-urilor / proceselor
(initial folosit pentru procese, apoi adaptat pentru thread-uri);
- un thread existent T creeaza un numar de thread-uri copil:
T1, T2, . , Tm

- fiecare thread va executa in paralel cate o parte a programului,


alaturi de T;
- threadul T asteapta terminarea tuturor thrd. T1, , Tm si apoi
executa procedura join;
- folosit in: - OpenMP (open multi processing)
- MPI-2 (comenzile spawn, exit)
Descrieti implementarea parbegin-parend
Parbegin-parend (cobegin-coend):
- specifica zona din program care se executa paralel;
- similar fork-join, se creeaza o secventa de thread-uri;
- instructiunile care urmeaza blocului parbegin-parend se vor
executa dupa terminarea tuturor thread-urilor;
- implementat in OpenMP;
Descrieti schema de tip master-worker, client-server;
Schema Master-Worker (Master-Slave) :
- nodul master e responsabil de coordonare
(initializari, timing, output); controleaza
executia programului;
- nodurile de tip worker pot si creeate
static sau dinamic;
MASTERUL TRIMITE INTR-UN SINGUR SENS COMENZILE CATRE WORKER PRIN
CONTROL.
Schema Server-Client :
- se genereaza thread-uri multiple care trimit request-uri catre
server, apoi efectueaza calcule pe datele obtinute;
SERVERUL SI CLIENTUL FAC SCHIMB DE INFORMATII PRIN REQUEST SI REPLY
- Descrieti conceptul de task-pool
Task pool : o structura care contine sarcinile pregatite spre a fi executate;
Pentru executarea sarcinilor se foloseste un numar fix de thread-uri;
In timpul executiei unei sarcini se pot genera noi sarcini, care urmeaza a fi
inserate in task pool; Programul termina atunci cand nu mai exista nici o
sarcina in task pool;

Descrieti conceptul de producer-consumer;


Producer-Consumer:
- exista thread-uri de tip producer si de tip consumer;
- producer threads produc date;
- consumer threads folosesc datele ca input;
- pentru transferul datelelor de la producer la consumer threads
se foloseste o structura de date comuna un buffer care poate fi

accesat de ambele tipuri de thread-uri;


- Observatii: un thread producer poate scrie date daca bufferul nu
este plin, iar un thread consumer poate accesa date doar daca
bufferul nu este gol se utilizeaza sincronizarea thread-urilor.
Descrieti operatiile de comunicare: single transfer, single broadcast, single
accumulation, gather, scatter, multi-broadcast, multi-accumulation, total
exchange;
Single transfer:
- doua procesoare implicate;
- primul procesor trimite mesajul intr-un buffer send, impreuna cu
rangul procesorului (procesului) care urmeaza sa primeasca
mesajul;
- procesorul care primeste mesajul executa o operatie de receive
prin care mesajul este copiat intr-un buffer receive;
- Observatii: - daca perechea send / receive nu este
corespunzatoare se ajunge la deadlock!
- daca transmisiile sunt regulate sunt mai eficiente si
mai usor de implementat operatiile de comunicare
globale;

Single broadcast:
- un singur procesor Pi trimite un bloc de date catre mai multe
procesoare; Pi se numeste procesor root;
- inaintea executiei operatiei de broadcast, mesajul este stocat in
memoria locala a procesorului root, iar dupa executie mesajul va fi
stocal in memoria locala a fiecarui procesor;
- pentru a efectua operatie, fiecare procesor trebuie execute o
operatie de tip broad cast in care se specifica procesorul root;
Single accumulation:
- fiecare procesor pune la dispozitie un bloc de date de acelasi tip si
aceeasi marime;
- datele sunt adunate la procesorul root (P1);
- pentru a efectua operatia de single accumulation fiecare nod
cheama operatia specificand nodul root;

Gather:
- fiecare procesor pune la dispozitie un bloc de date ;
- procesorul root (P1) va primi p mesaje ;
- nu are loc operatia de reducere (operatie comutativa, asociativa)
ca in cazul single-accumulation;
- pentru a efectua operatia de single accumulation fiecare nod
cheama operatia specificand nodul root; in plus, acesta specifica un
buffer suficient de mare pentru a primi toate blocurile;

Scatter:
- un anume procesor (root) pune la dispozitie cate un bloc de date
pentru fiecare procesor ;
- pentru a efectua operatia de scatter fiecare nod cheama operatia
specificand nodul root si un buffer unde urmeaza sa fie stocat blocul
de date;
- procesorul root specifica, de asemenea, bufferul send.
Multi-broadcast:
- operatia este echivalenta cu o serie de operatii single-broadcast
efectuate de fiecare procesor;
- nu exista un procesor root!
- pentru a efectua operatia de multi-broadcast, fiecare procesor
cheama operatia si specifica un buffer send, dar si un buffer de
receive;
- dupa incheierea operatiei, fiecare procesor va avea blocurile de
date in succesiunea data de rangul procesorului;
- operatia este utila pentru a colecta datele calculate pe toate
procesoarele;
Multi-accumulation:
- fiecare procesor executa o operatie de tip single-accumulation ;
- fiecare procesor pune la dispozitie un alt bloc;
- datele bloc pentru un anume receiver sunt combinate printr-o
operatie de reducere;
- nu exista procesor root;
- fiecare procesor cheama operatia, specifica un buffer send, un
buffer receive si o operatie de reducere;
- in bufferul de send fiecare procesor stocheaza separat blocurile de
date pentru toate celelalte procesoare;

Total exchange:
- fiecare procesor pune la dispozitia oricarui alt procesor un bloc
posibil diferit ;
- fiecare procesor executa o operatie de tip scatter;
- spre deosebire de multi-broadcast, fiecare receiver primeste
blocuri de date diferite de la acelasi sender;
Indicati ierarhia operatiilor de comunicare
Ierarhia operatiilor de comunicare

- Pornind de la cea mai generala operatie de comunicare (total


exchange), celelalte operatii rezulta prin specializare;
- Total exchange este cel mai general tip de comunicare, intrucat
fiecare procesor transmite mesaje diferite catre oricare alt procesor;
- Multi-broadcast e un caz particular de total exchange in care
fiecare procesor trimite acelsi mesaj catre toate celelalte;
- Multi-accumulation e operatia duala pentru multi-broadcast;
- Gather este un caz particular de multi-broadcast, care rezulta din
faptul ca se considera un singur receiver;
- Scatter este operatia duala a operatiei gather;
- Single braodcast este un caz particular de Scatter, in care
procesorul root trimite acelsai mesaj catre toate celelalte
procesoare;
- Single accumulation este operatia duala pentru single broadcast;
- Single transfer este un caz particular de single broadcast pentur
care doar ruta de la procesorul root catre un altul leste relevanta; de
asemenea este un caz particular de single accumulation, in care
root-ul foloseste o operatie speciala de reducere.
Ceste rangul unui proces ? Ce este un comunicator ?
rangul este identificatorul procesului respectiv

Descrieti metodel de input/output: secvential, N fisiere pentru N procese,


toate
procesele acceseaza un singur fisier.
I/O secvential (numai nodul 0 citeste/scrie)
Avantaje:
- trivial de folosit pentru sarcini mici de I/O
- poate fi folosit si de librarii de I/O care nu sunt paralele
Dezavantaje:
- limitat de transferul de date pe care il poate sustine un singur nod
- un singur nod poate avea memorie insuficienta pentru anumite sarcini
- nu scaleaza

N fisiere pentru N procese


Avantaje:
- nu este necesara coordonarea sau comunicarea intre procese
- poate scala mai bine ca I/O secvential
Dezavantaje:
- cresterea numarului de procese duce la aparitia multor fisiere de
dimensiune mica
- de multe ori, datele trebuie postprocesate intr-un singur fisier final
- citirea/scrierea necoordonata poate da peste cap sistemul de fisiere

Toate procesele acceseaza un singur fisier


Avantaje:
- existenta unui singur fisier
- datele pot fi stocate intr-un mod obisnuit, evitandu-se postprocesarea
- scalare eficienta daca sistemul este implementat corect
Dezavantaje:
- citirea/scrierea necoordonata poate da peste cap sistemul de fisiere
- este necesar o gandire mai atenta a programului
Intr-un sistem cu memorie partajata, precizati rolul variabilelor de
excludere
mutuala (mutex) si a variabilelor de conditie.
Variabilele Mutex
Variabile Mutex = o structura de date a tipului predefinit
opac pthread_mutex_t ;
Un astfel de tip de variabila poate fi folosita pentru a
asigura excluderea mutuala
O variabila Mutex are 2 stari: - locked
- unlocked
Inainte ca o variabila Mutex sa fie folosita, ea trebuie
initializata:
- statica:
- dinamica:
Variabilele mutex se folosesc in mod tipic pentru a asigura excluderea
mutuala cand sunt accesate structuri de date globale in maniera
concurenta;
- Variabilele mutex se pot folosi si pentru a astepta ca o anumita conditie
sa fie indeplinita;
O variabila de conditie este o structura de date opaca, care permite unui
thread sa astepte indeplinirea unei conditii, fara asteptare activa;
- Aceasta se realizeaza printr-un mecanism de semnalizare, care
blocheaza executia thread-ului, in asa fel incat el nu consuma timp CPU;

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