Documente Academic
Documente Profesional
Documente Cultură
Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i
s i va Algoritmul LCR impune sensul de parcurgere st angadreapta pentru inel. Fiecare unitate de procesare pi transmite propriul identicator idi c atre vecinul din st anga, apoi va as tepta un mesaj de la vecinul din dreapta. Se disting urm atoarele 3 cazuri: 1. dac a id -ul recept ionat este mai mare dec at id -ul propriu, atunci se va transmite noul id (cel recept ionat) c atre st anga; 2. dac a id -ul recept ionat este mai mic dec at id -ul propriu, atunci procesul curent va ignora acest mesaj ( n sensul c a nu va transmite noul id c are vecinul din st anga); 3. dac a id -ul recept ionat este propriul id , atunci procesul curent se va declara lider s i va transmite n inel un mesaj de terminare. Algoritmul 1 expune pseudocodul algoritmului LCR. Notat ii: idi reprezint a identicatorul unit a tii de procesare pi . starei memoreaz a starea curent a a unit a tii de procesare pi (adormit , trezit ). statuti memoreaz a starea nal a a unit a tii de procesare pi (lider sau non lider). Premise: Init ial lider = necunoscut s i statuti = adormit . In Figura 1 este prezentat un exemplu de rulare pentru un inel cu 8 procese.
Aplicat ii
Implementat i, utiliz and MPI, algoritmul prezentat n laborator. Pentru topologia de tip inel poate utilizat a o topologie de tip cartezian cu o linie s i n coloane (unde n reprezint a num arul de procese pentru care rulat i aplicat ia).
Dept.: Calculatoare s i Tehnologia Informat iei an IV Studii universitare de licent a Algoritmi Paraleli s i Distribuit i
function LCR LE( pi , starei , statuti , lider) while true do switch do case nu primeste nici un mesaj : if starei = adormit then starei trezit trimite < id nou, idi > spre stanga end if break case primeste < id nou, id > dinspre dreapta if id = idi then statuti lider lider idi trimite < lider, lider > catre stanga break while end if if id > idi then trimite < id nou, id > catre stanga end if break case primeste < lider, id > dinspre dreapta statuti non lider lider id trimite < lider, lider > catre stanga break while end while end function