Sunteți pe pagina 1din 58

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 1
Introducere in calculul
paralel. Scopul cursului.
Concepte si notiuni.

Motivatie
Mai repede, mai mult
Problemele de rezolvat necesita
cresterea puterii de calcul

Probleme de rezolvat
Aplicatii

Putere de calcul,
Tehnologie

Cresterea puterii de calcul permite


punerea de noi probleme

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, vant3dimensional}=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

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


Specificarea unui
program
concurent, 3
procese

Executia pe sistem
cu 3 procesoare
Paralelism fizic
Multi-procesare

Executia pe sistem
cu 1 procesor
Paralelism logic
Multi-programare
0

P0

P0
P1

P1

Proces P0

P2

P0
P2

Proces P1

P0

P1
P2

Proces P2
T

P2

Relatia concurent-distribuit-paralel

Multi-tasking, Multi-threading:
definirea de procese care ruleaza
in acelasi timp (concurent)

Concurent

Distribuit

Paralel

Multi-procesare: procesele
concurente ruleaza pe
procesoare diferite

Calcul paralel Calcul distribuit


Sistem de calcul paralel

Sistem distribuit

Procesoarele sunt, de obicei, Procesoarele sunt, de obicei,


eterogene
de acelasi tip
Procesoarele sunt, de obicei, Procesoarele sunt, de obicei,
distribuite pe o arie
distribuite pe o arie
geografica mare
geografica mica
Scopul: executarea unor
calcule mai rapid decat cu
un singur procesor

Scopul: utilizarea in comun a


resurselor disponibile,
transmiterea informatiilor.
Probleme specifice:
fiabilitate, securitate

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

Capitolul 2
Modele de arhitecturi
paralele; Clasificari

Sistem de calcul paralel


Calculator paralel= N procesoare + retea
de interconectare
Mem1

Mem2

Mem_M

Retea de interconectare

CPU1

CPU2

CPU_N

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
+
SISD
AB

A+B

+
MISD
*
AB

A+B
A*B

+
A B SIMD
CD

A+B
C+D

+
MIMD
*
AB
CD

A+B
C*D

Dupa [Petcu]

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

Unitate
procesare

Memorie
partajata
sau
Retea de
interconect
are

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

Vectorial Matriceal (cont.) [Petcu]

Instructiuni conditionale / SIMD [GGKK]

Sisteme MIMD
Unitate
Control

Unitate
procesare

Unitate
Control

Unitate
procesare

Unitate
Control

Unitate
procesare

Memorie
partajata
sau
Retea de
interconect
are

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

Memorie

Unitate
procesare

Unitate
Control

Unitate
procesare

Unitate
Control

Unitate
procesare

Unitate
Control

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

Din: [Grama,Gupta,Kumar&Karypis]

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:
Sendmesajtodestinatie
Receivemesajfromsursa

Specificarea destinatiei/sursei unui mesaj:


Prin numirea directa a procesului emitator/ receptor
Printr-o cutie postala generala (Mailbox)
Prin specificarea canalelor de comunicatie

PRAM - Modelul ideal al unui


calculator paralel
Modele teoretice ale calculatoarelor paralele:
permit ignorarea detaliilor arhitecturale si
concentrarea asupra algoritmilor
PRAM (Parallel Random Access Machine)
Extensie a modelului secvential RAM (Random
Access Machine) in care exista procesoare
multiple
PRAM consta din p procesoare identice, fiecare
cu un id propriu, avand acces la o memorie locala
si o memorie globala de dimensiune nelimitata
care este accesibila in mod uniform tuturor
procesoarelor

PRAM (cont.)
Procesoarele pot citi si scrie in aceeasi
locatie de memorie simultan
Fiecare procesor poate efectua orice
operatie pe memoria partajata
Fiecare procesor are o memorie locala
mica
Fiecare procesor executa acelasi program
pe date diferite

PRAM (cont)
Exista un clock comun sistemului
Intr-o unitate de timp, fiecare procesor poate
executa una sau toate operatiile urmatoare:
Read dintr-o locatie de memorie locala sau globala
Execute o operatie RAM
Write intr-o locatie de memorie locala sau globala

Comunicatia intre 2 procesoare dureaza 2 unitati


de timp.
In prima unitate de timp, un procesor scrie un mexsaj
intr-o locatie din memorie iar in a doua unitate de timp
celalalt procesor citeste mesajul. Specifiocarea
locatiei de mmemorie utilizata pentru comunicare este
sarcina programatorului

Categorii PRAM
In functie de modul (concurent/exclusiv) in care se fac
operatiile de citire si scriere:

EREW: Exclusive Read Exclusive Write


CREW: Concurrent Read Exclusive Write
ERCW: Exclusive Read Concurrent Write
CRCW: Concurrent Read Concurrent Write

Situatiile de Concurrent Write pot fi tratate in felurile


urmatoare:
Comun: scrierea este autorizata daca valoarea este aceeasi la
toate procesele
Arbitrar: un proces arbitrar scrie
Prioritate: scrie proce mai prioritar
Combinare: se scrie suma valorilor

Ierarhia modelelor PRAM


Priority CRCW
Puterea de
calcul

Arbitrary CRCW
Common CRCW

Cost de
realizare a
masinii
PRAM

CREW
EREW

Diferitele modele PRAM satisfac o anumita ordine de putere


Daca A<B, B este mai puternic decat A: un algoritm care ruleaza pe un
model PRAM de tip A va rula si pe un model de tip B, dar nu si invers

Complexitatea fizica a unui


calculator ideal PRAM
Procesoarele si memoriile sunt conectate
prin switch-uri.
Deoarece PRAM presupune un acces in
unitatea de timp, fiecare switch trebuie sa
opereze in timp O(1). Pentru un sistem cu
p procesoare si memorie de m cuvinte,
complexitatea unui switch este O(mp).
Pentru valori altele decat mici ale lui p si
m, calculatorul PRAM nu este realizabil.

Exemplu de algoritm pentru


modelul PRAM
Suma a n numere:
Secvential: O(n)
Paralel, p=n procesoare, initial fiecare
procesor detine un numar
Pe un CRCW PRAM cu combinare: O(1)
Pe celelalte modele PRAM: se aduna in
paralel doua cate doua numere, sub forma
arborescenta => O(logn)

Aplicabilitatea modelului PRAM


Exista o intreaga literatura de studiu a
algoritmilor PRAM
Modelul PRAM se concentreaza exclusiv
pe concurenta si ignora sincronizarea si
comunicarea => daca nu se poate obtine
un algoritm paralel bun pentru PRAM nu
se poate obtine un algoritm mai bun in
lumea reala

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