Documente Academic
Documente Profesional
Documente Cultură
Una dintre cele mai importante trsturi ale unui algoritm paralel
este divizarea problemei n subprobleme care pot fi distribuite pe
mai multe taskuri. Pentru proiectarea unuialgoritm paralel se pot
considera o serie de abordri. Prima ar fi paralelizarea
unui algoritm secvenial deja existent. Pentru aceasta va trebui s
se determine paralelismul care apare n mod natural n cadrul
unui algoritm secvenial . Uneori, se prefer gsirea unei soluii
diferite de cea oferit de algoritmul secvenial ceea ce presupune
o regndire a ntregului algoritm. Indiferent de modul de abordare
n cadrul unui algoritm paralel nu se pot ignora o serie de
consideraii importante. Una din acestea este costul de
comunicaie ntre procese. Dac la un algoritm secvenial costul
sau complexitatea este exprimat n spaiu (mrimea memoriei
ocupate) i timp (numrul de cicli de ceas) necesar pentru a
executa un program, la cel paralel trebuie luat n considerare i
modul n care se comunic ntre procese.
Problema comunicaiei
Exist unii algoritmi de calcul paralel care nu au nevoie de
comunicare ntre procese. Spre exemplu dac ne imaginm un
algoritm paralel care face conversia unei imagini color n una alb
negru. Datele din acea imagine pot fi distribuite pe mai multe
taskuri independente. Acest tip de probleme sunt denumite
"embarrassingly parallel" [1] (paralelism jenant) deoarece
comunicarea ntre taskuri este foarte redus. Cei mai muli
algoritmi paraleli sunt algoritmi compleci n care comunicaia
ntre procese are o importan major. Complexitatea algoritmilor
paraleli este calculat n funcie de memoria folosit i timp. Ei
trebuie s mai optimizeze folosirea unei alte resurse,
comunicarea ntre procese/procesoare. Sunt dou modaliti prin
care procesele/procesoarele comunic: Memorie partajat sau
Folosind mesaje. Modelul cu memorie partajat se refer la
programarea ntr-un mediu multiprocesor pentru care
comunicaia ntre procese se realizeaz prin intermediul unei
memorii comune. Modelul cu transfer de mesaje este adecvat
implementrii unui algoritm paralel ntr-o reea de calculatoare.
Alocarea
Alocarea reprezint distribuirea de taskuri procesoarelor.
Planificarea ca i n cazul partiionrii poate fi static sau
dinamic. n cazul alocrii statice sarcinile i ordinea de execuie
sunt cunoscute nainte de execuie. Algoritmii de calcul
paralel ce folosesc planificarea static necesit un volum mic de
comunicare ntre procese potrivit pentru cazurile cnd costurile
de comunicaie este mare. n cazul planificrii dinamice alocarea
sarcinilor este fcut la rulare. Aceast tehnic permite
distribuirea uniform a ncrcrii procesoarelor i ofer flexibilitate
n utilizarea unui numr mare de procesoare. Astfel dac
un procesor termin mai repede task-ul alocat i se poate atribui
un alt task mrind n acest mod eficiena algoritmului.
Dezavantaje:
Biblioteca mpich2
Message Passing Interface
MPI este un protocol de comunicatie folosit pentru programarea
paralela menit sa ofere functionalitate pentru sincronizarea si
comunicarea intre procese intr-un mod independent de limbaj si de
platforma ( exista implementari ale MPI pentru aproape orice
platforma ). Programele MPI sunt orientate catre procese, asadar
pentru obtinerea de performante maxime trebuiesc definite pe fiecare
computer atatea procese cate procesoare exista ( sau core-uri ).
MPICH2 e o implementare free, open-source a MPI-2. Cele mai
importante componente ale MPICH sunt
mpd ( multi-purpose daemon ) si mpiexec. Mpd are rolul de manager
in ceea ce priveste comunicarea si sincronizarea intre procese, iar
mpiexec are rolul de a lansa in executie aplicatiile MPI.
Sintaxa mpiexec:
Cel mai comun mod de utilizare al mpiexec este :
mpiexec n <numar procese> [-host <host>] aplicatie [: -n <numar
procese> -host <host> aplicatie]