View
231
Download
1
Category
Preview:
Citation preview
8/19/2019 Asembler parsiranje
1/33
158
7
Programirawe paralelnihsistema
Iako se, iz prethodno izlo`enog, vidi izuzetna kompleksnost i raznovrsnost
problema u podru~ju arhitektura, jo{ ve}i izazovi postoje u podru~ju programira-
wa paralelnih sistema. Napredak u ovoj oblasti tekao je sporije iz dva osnovna
razloga: objektivna kompleksnost problema i nepostojawe jedinstvenog modela
paralelne arhitekture kao generalne paradigme za paralelno procesirawe, analog-
ne modelu Von Neuman-ove ma{ine za sekvencijalno programirawe.
Rje{ewe problema le`i u odgovoru na jednostavno pitawe: "Kako realizovati
program, kojim se rje{ava `eqeni aplikativni problem, tako da wegovo izvo|ewe
na paralelnoj arhitekturi bude optimalno?". Optimalno izvo|ewe podrazumijeva
postojawe funkcije ciqa koja mo`e biti: minimalno vrijeme izvr{ewa programa
(algoritma), ravnomjerno optere}ewe procesnih resursa, minimalna cijena izvo|e-
wa i sl.
Uobi~ajena funkcija ciqa za izvo|ewe neke aplikacije na paralelnom sistemu u
teoretskim razmatrawima je minimizacija vremena izvr{ewa, a za skup nezavisnih
programa, optimalan balans optere}ewa po procesnim elementima. U praksi,
naj~e{}e je od interesa dobijawe najpovoqnijeg odnosa performansa/cijena, gdje
cijena ukqu~uje ne samo cijenu procesirawa nego i razvoja aplikacije.
Prethodno navedeno pitawe implicira inherentno postojawe paralelizma u
aplikativnom problemu, te optimalnu eksploataciju istog u paralelnom sistemu.
Aplikativni problem se mo`e rije{iti odre|enim ure|enim skupom operacija -
algoritmom, koji se mo`e posmatrati na razli~itim nivoima apstrakcije: nivou
zadataka, podzadataka, procedura, grupa instrukcija, samih instrukcija ili elemen-
tarnih operacija. Izme|u odre|enih operacija (na svakom nivou) mo`e postojati
8/19/2019 Asembler parsiranje
2/33
159
zavisnost u pogledu redoslijeda izvo|ewa (proistekla iz zavisnosti po podacima
ili kontrolnoj zavisnosti). Za operacije izme|u kojih ne postoji zavisnost,
ka`emo da se mogu izvesti (procesirati) istovremeno (paralelno).
Ponovimo uslove nezavisnosti grupa operacija (iz ta~ke 4.4.1 – upravqa~ki
hazardi) onako kako je to prvobitno definisao Bernstein (1966), koriste}i
ulazno/izlazne skupove podataka. Varijable se klasifikuju u 4 kategorije:
varijable koje se samo ~itaju, varijable koje se samo upisuju, varijable koje se
prvo ~itaju, a zatim upisuju, varijable koje se prvo upisuju, a zatim ~itaju.
Ako se skupovi ovih tipova varijabli ozna~e sa W , onda se grupe opera-
cije sa Sl. 7.1 a ) mogu izvesti kao na Sl. 7.1 b ), pod uslovom da je:
iiii Z Y X ,,,
1) 0)()( 222111 = Z Y X Z Y W UUIUU ,
2) 0)()( 222111 = Z Y W Z Y X UUIUU ,
3) . 0)( 3321 =Y W X X UII
Ako navedeni uslovi nisu ispuweni, onda postoji antizavisnost, direktna
zavisnost ili izlazna zavisnost po podacima, respektivno.
U svakom trenutku u procesu izvo|ewa, za skup operacija izme|u kojih ne postoji
zavisnost u pogledu redoslijeda izvo|ewa i koje su spremne za izvo|ewe ka`emo da
~ine slobodan skup (intuitivno, optimalan raspored treba da omogu}i izvo|ewe
{to ve}eg broja slobodnih operacija u svakom slijede}em vremenskom intervalu).
1P
P3
P2
P1
P3
P2
a) Serijska b) Paralelno-serijska
Sl. 7.1 Sekvence izvo|ewa operacija.
8/19/2019 Asembler parsiranje
3/33
160
Bez obzira na to na kom nivou se razmatra problem, krajwi rezultat je raspodjela
izvr{ewa bazi~nih (ma{inskih) instrukcija po procesorima. Problem optimalnog
izvo|ewa (sa stanovi{ta zadate funkcije ciqa) u osnovi se sastoji iz:
• problema grupisawa (podjele problema na zrna ( grains), veli~ine konkurentnih
modula-zrna koja se raspore|uju po procesnim elementima i strukture elemen-
tarnih operacija po zrnima),
• problema optimalnog raspore|ivawa zrna po procesnim elementima.
Rje{avawe ovih problema zahtijeva da se u razmatrawe ukqu~i i niz dodatnih para-
metara: karakteristike i mehanizmi me|uprocesorske komunikacije, te mogu}nost
preklapawa komunikacionih i ra~unskih operacija, heterogenost procesorskih i
memorijskih elemenata i sl.
U realnim sistemima, naglasak je na {to efikasnijoj eksploataciji parale-
lizma, uz {to mawe optere}ewe programera. Automatska identifikacija i eksploa-
tacija paralelizma, sofistikovano okru`ewe i alati, pogodni mehanizmi i metode
za eksplicitnu specifikaciju i eksploataciju paralelizma su odnosni aspekti u
ovom domenu koji su predmet kontinualnog istra`ivawa i usavr{avawa.
7 1 Vremenski gubici u paralelnim sistemima
Teoretski, maksimalno ubrzawe koje se mo`e posti}i izvo|ewem programa na
paralelnom sistemu sa N procesora jednako je broju procesora. U takvom scenariju,
svih N procesora bi izvodilo samo korisne instrukcije, i svi bi po~eli i zavr{i-
li procesirawe u istim vremenskim trenucima. U praksi, ostvarivawe ovakvih
maksimalnih performansi se ne posti`e zbog gubitaka vremena prouzrokovanih:
• komunikacionim ka{wewima,
• sinhronizacijom izme|u procesora,
• nezaposleno{}u procesora (prazni hodovi procesora),
• neophodnim upravqa~kim aktivnostima operativnog sistema.
Komunikaciona ka{wewa i mehanizmi
Kao {to smo prethodno pomenuli, izvo|ewe ra~unawa (procesa, niti, grupa instru-
kcija) se u paralelnim sistemima raspodjequje po procesnim elementima. Proceso-
ri koji izvode ra~unawa izme|u kojih postoji zavisnost po podacima, moraju imati
8/19/2019 Asembler parsiranje
4/33
161
mogu}nost me|usobne komunikacije u ciqu izmjene podataka. Procesori izmjewuju
podatke na dva osnovna na~ina: preko zajedni~ke memorije ili preko komunikaci-
onih kanala (kompromisni koncept je koncept po{tanskog sandu~eta). Implikacije
me|uprocesorske komunikacije su komunikaciona ka{wewa i konflikti zbog
kori{tewa zajedni~kih (komunikacionih) resursa. Komunikaciona ka{wewa se
odnose na vrijeme koje je potrebno za transfer podataka od izvora do odredi{ta, a
konflikti u kori{tewu resursa nastupaju kada se pojavi vi{e zahtjeva za
kori{tewe jednog resursa, {to rezultuje dodjeqivawem resursa jednom zahtjevu i
~ekawem ostalih.
Prilikom prenosa poruka kroz spre`nu mre`u npr., vi{e poruka istovremeno
mo`e zahtijevati prolaz kroz jedan ~vor, uz mogu}u degradaciju komunikacionog
saobra}aja ne samo u okolini navedenog ~vora, nego i u cijeloj mre`i. Za
redukovawe ovih konflikata koriste se razli~ite tehnike: npr. objediwavawe
istih komunikacionih zahtjeva u komunikacionim ~vorovima, primijeweno u NYU
Ultracomputer/IBM RP3, ili razli~ite softverske adaptivne tehnike usmjeravawa
poruka koje uzimaju i obzir i teku}e stawe saobra}aja u mre`i. Prema tome,
ka{wewa uslijed izmjene podataka izme|u procesora, mogu u znatnoj mjeri uticati
na performanse paralelnog izvo|ewa.
Za ilustraciju, u tabeli 7.1 za neke paralelne i distribuirane sisteme date su
aproksimativne vrijednosti parametara komunikacionih ka{wewa Ts i Tw u [ s ]
(vrijeme incijalizacije kanala i vrijeme prenosa izme|u procesora po rije~i).
Tipi~no ka{wewe pri transferu 100 bajtne poruke izme|u procesora je, za prvu
generaciju multira~unara (1983-1987) 6000 s , za drugu generaciju (1988-1992) 5 s
i tre}u (aktuelnu) generaciju ispod 0.5 s [45].
Tabela 7.1 Aproksimativne vrijednosti parametara komunikacionih ka{wewa za nekeparalelne ra~unarske sisteme.
Sistem T s [ s ] T w [ s ]
Cray-T3E 0.013
Intel Paragon 121 0.07
Thinking Machines CM-5 82 0.44
Intel DELTA 77 0.54
nCUBE-2 154 2.4
Radna stanica na Ethernet-u 1500 5.0
8/19/2019 Asembler parsiranje
5/33
162
Mehanizam komunikacije kod multiprocesora je (naj~e{}e) direktan pristup
dijeqenim varijablama u zajedni~koj memoriji. Ovakvi mehanizmi podlo`ni su
nepredvi|enim i ne`eqenim efektima: kod asinhronog izvo|ewa ra~unawa po
procesorima bilo koja izmjena u sekvenci pristupa zajedni~kim varijablama mo`e
produkovati razli~it krajwi rezultat (alternativno, procesori mogu komunici-
rati i mehanizmom poruka).
Kod multira~unara, komunikacija se realizuje na bazi prenosa poruka,
kori{tewem specifi~nih naredbi odre|enog programskog jezika ili biblioteke
funkcija. Nijedan pristup jo{ uvijek nema adekvatno rje{ewe za fundamentalne
probleme memorijske latentnosti i komunikacionih ka{wewa.
Problemi sa odr`awem koherentnosti ke{ memorija i nagomilavawem
konflikta na magistrali, kod sistema sa zajedni~kom memorijom, limitiraju
pove}awe broja procesora u ovim sistemima. Cijena komunikacije izme|u proce-
sora kod MIMD multira~unara sa distribuiranom memorijom name}e eksploataciju
krupnozrnastog paralelizma na globalnom nivou: ra~unawa (implicitno) treba da
izvedu hiqade instrukcija bez prekida (promjene konteksta) ili poziva
operativnog sistema. Cijena kreirawa, blokirawa, destrukcije, komunikacije i
sinhronizacije za ra~unawa, mo`e iznositi stotine (pa i hiqade) procesorskih
ciklusa. Npr. kod sistema baziranih na standardnim mikroprocesorima,
pristizawe poruke u neki procesni element mo`e:
• generisati prekid za odredi{ni procesor, uz aktivirawe sekvence za obradu
poruke,
• detektovati sam procesor periodi~nim ispitivawem da li je poruka stigla,
• biti detektovano strukturom programa, ako se obezbijedi, da za svako slawe
poruke iz izvori{nog procesora, odredi{ni procesor izvede korespondentu
prijemnu primitivu.
Svi navedeni na~ini su relativno spori i neefikasni za sitnozrnastu
komunikaciju, neophodnu za eksploataciju sitnozrnastog paralelizma.
Napori za prevazila`ewe ovih problema i}i }e vjerovatno u pravcu razvoja
vi{enitnih arhitektura, gdje }e cijena upravqawa nitima biti relativno mala.
Sa programskog aspekta, komunikacija se realizuje odgovaraju}im
konstrukcijama programskih jezika.
8/19/2019 Asembler parsiranje
6/33
163
CSP (communicating sequential programs) jezici podr`avaju iskqu~ivo komunikaciju
preko kanala: komunikacija se realizuje eksplicitnim imenovawem odredi{ta
komunikacije. Izlazna naredba ima format:
: = ! < expression >
a prijem se inicira ulaznom naredbom
: = ? target variable.
Osnovni koncept komunikacije u ADA programskom jeziku su randevui: randevu
se ostvaruje sa dva doga|aja:
• pozivom koji jedan zadatak upu}uje drugom,
• prihvatom komunikacije od strane drugog zadatka izvo|ewem ACCEPT
naredbe (Sl. 7.2).
Ipak, ADA dozvoqava i komunikaciju preko dijeqenih varijabli
kategorizacijom varijable SHARED kvalifikatorom.
CALL ACCEPT
Sl. 7.2 ADA randevui.
H.F.Jordan , predla`e slijede}e tipove varijabli u programskim jezicima za parale-
lno procesirawe u sistemima sa distribuiranom memorijom:
• private - jedno ime varijable ovog tipa referencira u memoriji svakog procesora
specifi~nu memorijsku lokaciju,
•
unique - jedna varijabla ovog tipa postoji samo u memoriji jednog procesora,• cooperative update - postoji jedna kopija varijable u svakom memorijskom modulu.
A`urirawe se mora izvesti istovremeno nad svim kopijama.
• replicated - a`urirawe se izvodi nad lokalnim kopijama podataka (npr. kod
indeksne varijable koja uzima isti opseg vrijednosti u svim procesorima).
8/19/2019 Asembler parsiranje
7/33
164
Tako|e se predla`u globalni komunikacioni mehanizmi: emisija (broadcast ),
univerzalna emisija i univerzalna izmjena za prosqe|ivawe i izmjenu podataka.
Concurrent Pascal zahtijeva eksplicitnu specifikaciju dijeqenih varijabli te ko-
ntrolisan pristup preko definisanih procedura za rad nad dijeqenim varijablama.
Compositional C++ (CC++, Caltec/Chandy, Kesselman) ima ekstenziju standardnog C++
jezika kojom se defini{u procesorski objekti koji se koriste za reprezentaciju
lokalnog adresnog prostora: ra~unawa koja se izvode u procesorskom objektu i koja
rade sa podacima definisanim u tom objektu, rade u lokalnom (i zato "jeftinom")
adresnom prostoru. Za referencirawe podataka i funkcija u drugim procesorskim
objektima, koriste se globalni pokaziva~i. Primjer pristupa ne-lokalnim podaci-
ma iz nekog ra~unawa (niti) iz procesorskog objekta , dat je na Sl. 7.3.1obj p
Svako referencirawe podataka u drugom procesorskom objektu se realizuje:
• formirawem i slawem poruke udaqenom procesorskom objektu (uz
blokirawe niti ra~unawa koje je iniciralo referencirawe),
• kreirawem nove niti za pristup udaqenom objektu. Pristup se realizuje
zavr{etkom izvo|ewa kreirane niti na udaqenom procesoru,
• vra}awem tra`ene vrijednosti inicijalnoj niti i nastavkom izvo|ewa iste.
pobj2 pobj1
*gptr var _ x
*gptr = 3var_x = 3
? var_x
var_y +=*gptr
write(*gptr ,3)
ack
value = 3
read (*gptr )
Sl. 7.3 Udaqeno pisawe/~itawe.
MPI (message passing interface) procesi izvode programe pisane u standardnim
sekvencijalnim jezicima. Komunikacija izme|u procesa se realizuje u odre|enim
ta~kama pozivom odgovaraju}ih funkcija iz MPI biblioteke za slawe i prijem
poruka (MPI-SEND i MPI-RECV). Grupa procesa mo`e biti istovremeno ukqu~ena u
proces grupne komunikacije (emisije npr.) kroz MPI mehanizam komunikatora.
8/19/2019 Asembler parsiranje
8/33
165
Prosqe|ivawe poruka je nedeterministi~ko (ako procesi A i B {aqu poruku
procesu C, bez obzira na redoslijed slawa, redoslijed prijema nije odre|en).
Sinhronizacija
Ra~unawa u procesnim elementima se izvode brzinom koja se ne mo`e ta~no
predvidjeti. Posqedica toga je asinhrono generisawe akcija, doga|aja i podataka
koji se koriste u drugim procesima u paralelnom sistemu. U ciqu ure|ivawa ovih
doga|aja, uvodi se skup ograni~ewa (sinhronizacija) koja se koriste za odga|awe
izvo|ewa odre|enih ra~unawa, kako bi se zadovoqili potrebni uslovi. Osnovni
tipovi sinhronizacije kod multiprocesora su me|usobno iskqu~ivawe i
sinhronizacija uslova . Me|usobno iskqu~ivawe obezbje|uje da procesi pristupaju
ekskluzivno fizi~kim ili virtuelnim resursima. Dio koda koji se izvodi
ekskluzivno od strane nekog procesa i u kojem se (eksluzivno) pristupa dijeqenoj
varijabli, naziva se kriti~na sekcija .
Sinhronizacija uslova je tip sinhronizacije gdje procesi moraju da ~ekaju dok
stawe dijeqene varijable, koje zavisi od rezultata izvo|ewa grupe procesa, ne
dobije ̀ eqenu vrijednost.
Kod me|usobnog iskqu~ivawa proces detektuje status kriti~ne sekcije, i ako je
slobodna, postavqa status kriti~ne sekcije u zauzeto a zatim izvodi kriti~nu
sekciju. Ako je kriti~na sekcija zauzeta, proces mo`e nastaviti sa ispitivawem
statusa kriti~ne sekcije (kontinualno ili periodi~no) ne osloba|aju}i procesor,
ili se mo`e implementirati mehanizam koji proces stavqa u stawe ~ekawa a
procesor osloba|a za druge aktivnosti.
Proces koji ekskluzivno izvodi kriti~nu sekciju, na izlasku iz kriti~ne
sekcije postavqa indikator statusa kriti~ne sekcije u slobodno. Ako su neki
procesi u redu ~ekawa za kriti~nu sekciju, onda se aktivira jedan od procesa sa
liste ~ekawa, na bazi odre|enog prioriteta.
Naj~e{}a implementacija ovog mehanizma je preko nedjeqivih P(s) i V(s) primi-
tiva (Dijkstra), gdje P primitiva osigurava ekskluzivan ulaz u kriti~nu sekciju; s je
varijabla stawa zauzetosti kriti~ne sekcije, a V primitivom se reguli{e
napu{tawe kriti~ne sekcije. Pro{ireni semafor koji je razvio Agervala (1977)
omogu}ava da proces zahtijeva vi{e resursa istovremeno. Uslovno kriti~na sekcija
je strukturirani, korisni~ki orijentisani mehanizam (csect v do await c:s) koji
obezbje|uje da proces ne mo`e u}i u kriti~nu sekciju s dok se ne ispuni uslov c, i da
8/19/2019 Asembler parsiranje
9/33
166
ne mo`e do}i do preklapawa izvo|ewa razli~itih kriti~nih sekcija nad istim
dijeqenim resursom v.
Ekstenzije uslovno kriti~nih sekcija su monitori , koji ~ine skup dijeqenih
podataka i skup funkcija preko kojih se jedino mo`e pristupiti strukturama
dijeqenih podataka. Monitorske funkcije obezbje|uju sinhronizaciju konkuren-
tnih procesa.
Sinhronizacija uslova se naj~e{}e realizuje mehanizmom barijere . Svi procesi
moraju sti}i na barrier naredbu (koja se stavqa u kod svakog procesa). Samo jedan
proces (nakon {to su svi stigli na barijeru), prolazi kroz barijeru, i izvodi kod
izme|u barrier i endbarrier naredbe (Sl. 7.4). Nakon toga, svi procesi mogu nastaviti
izvo|ewe naredbe iza barijere.
barrier
endbarrier
Sl. 7.4 Sinhronizacija na barijeri.
Varijanta fazi-barijere dopu{ta da izvo|ewe procesa bude u nekoj sekciji koda
prilikom sinhronizacije.
Sinhronizacija mehanizmom doga|aja , koristi primitive wait i signal . Wait
primitiva obezbje|uje stavqawe procesa u stawe ~ekawa na doga|aj (ili
kombinaciju doga|aja). Drugi, aktivni procesi, signaliziraju primitivom signal
nastanak odre|enih doga|aja i kada se desi doga|aj na koji blokirani proces ~eka,
operativni sistem ga prevodi u stawe procesa spremnog za izvo|ewe.
U paralelnim multira~unarskim sistemima, sinhronizacija se realizuje meha-
nizmom poruka . Neke od varijanti primitiva za izmjenu poruka, opisane su
prethodno.
Za implementaciju sinhronizacije pri pristupu zajedni~kim resursima
neophodna je bila realizacija nedjeqivih operacija ispitivawa i a`urirawa
memorijskih lokacija na hardverskom/instrukcionom nivou. Razli~iti sistemi
imaju razli~itu formu ovih instrukcija: TEST-AND-SET (TAS), COMPARE-AND-SWAP
8/19/2019 Asembler parsiranje
10/33
167
(CAS) i sl. U vi{eprocesorskim sistemima mora se obezbijediti da procesor koji
izvodi navedene instrukcije, ima kontrolu nad pristupom memoriji za cijelo
vrijeme izvo|ewa instrukcije.
Fetch & add operacija omogu}ava konkurentno izvr{avawe generalizovane TAS
instrukcije uz serijalizaciju pristupa memoriji. Kod sinhronizacionih metoda na
bazi bit mapa (HEP sistem), svakoj dijeqenoj varijabli se pridru`uje sync i data
poqe. Svaka sinhronizaciona instrukcija je nedjeqiva i sadr`i poqe maske, koje
sadr`i informacije potrebne za ispitivawe i modifikaciju sync poqa (forma: OP
Address, Mask). Operacija ~itawa, npr. testira odre|eni bit sync poqa, i ako je on
‘1’ (raspolo`iv) ~itawe se realizuje, a odnosni bit postavqa u ‘0’.
Prazni hodovi procesora
Prazni hodovi procesora su periodi u kojima procesor ne obavqa korisne
instrukcije. U paralelnim sistemima (zbog zavisnosti po podacima ra~unawa
(operacija) na razli~itim procesorima) prazni hodovi su naj~e{}e uzrokovani:
• ~ekawem na zavr{etak ra~unawa koja produkuju podatke,
• ~ekawem na prosqe|ivawe podataka (komunikaciona ~ekawa),
• ~ekawem na dodjelu posla.
Navedena, ~ekawa mogu poticati od neodgovaraju}eg rasporeda ra~unawa po proces-
nim elementima, redoslijeda izvo|ewa ra~unawa i dr. Navedene pojave produ`avaju
vrijeme izvr{ewa programa, smawuju iskori{tewe procesora i pove}avaju cijenu.
Gubici uslijed aktivnosti operativnog sistema
U paralelnim sistemima operativni sistem je, kao i kod jednoprocesorskih siste-
ma, odgovoran za upravqawe izvr{ewem programa. Ove aktivnosti podrazumijevaju
stati~ko/dinami~ko mapirawe procesa po procesnim elementima, upravqawe
procesima i resursima, nadgledawe aktivnosti u sistemu i sl. Iako su funkcije
operativnih sistema visoko optimizovane, ove aktivnosti tako|e produ`avaju
vrijeme izvo|ewa programa u paralelnom okru`ewu.
8/19/2019 Asembler parsiranje
11/33
168
7 2 Granularnost paralelizma
Da bi se neki program izveo na paralelnoj arhitekturi konkurentnim procesira-
wem na vi{e procesnih elemenata, on se mora razdijeliti na parcijalno ure|en
skup zadataka (T, ). Efikasnost paralelnog izvo|ewa zavisi od vi{e parametara:
broja i karakteristika procesora i komunikacionih resursa, broja modula na koje
se program dijeli za izvo|ewe i strukture veza izme|u razdijeqenih modula, iznosa
pojedinih komponenata vremenskih gubitaka itd. Pove}awe broja modula i broja
procesora koji se pridjequju programu za izvr{ewe mo`e rezultovati degradacijom
performansi, ako vremenski gubici (zbog intenzivirawa me|uprocesorske komuni-
kacije) znatno rastu sa porastom broja modula i procesora.
p
Granularnost modula-zrna ima zna~ajan uticaj na kvalitet razdiobe i defini{e
se kao odnos potrebnog vremena ra~unawa u odnosu na komunikaciona ka{wewa
generisana zrnom (R/C). Ka`e se da je zrno sitno ako je odnos R/C mali (> 1). Sitna zrna su mikrooperacije i
instrukcije; grupe instrukcija ~ine zrna sredweg nivoa granularnosti, a krupna
zrna su funkcije i procesi (zadaci). Generalno, dekompozicija na sitna zrna
implicira ve}i iznos paralelizma, ali i ve}e gubitke vremena, zbog pove}awa
iznosa komunikacije i sinhronizacije. Analogno, krupnija zrna impliciraju mawi
stepen paralelizma, ali i mawe vremenske gubitke.
Kako je to prethodno izlo`eno paralelizam na nivou mikrooperacija i
instrukcija eksploati{e se na hardverskom nivou, paralelizam sredweg nivoa se
mo`e eksploatisati hardverski, softverski ili kombinovano (programske petqe,
niti) dok se krupnozrnasti paralelizam eksploati{e softverskim tehnikama.
Da bi se ostvarile dobre performanse izvo|ewa, potrebno je napraviti balans
izme|u iznosa paralelizma me|u programskim modulima i odgovaraju}eg iznosa
vremenskih gubitaka. Zato je u odre|enim slu~ajevima potrebno grupisati
sitnozrnaste zadatke u ve}a zrna, a u drugim dekomponovati krupna zrna u
sitnozrnaste module. Da bi se paralelizam eksploatisao, potrebno je prvo
izvr{iti identifikaciju istog, a zatim ga na odgovaraju}i na~in specifikovati
ma{ini.
Identifikacija i specifikacija paralelizma, mo`e se realizovati:
8/19/2019 Asembler parsiranje
12/33
169
• automatski u fazi prevo|ewa, a na osnovu relacija zavisnosti po podacima
pojedinih grupa naredbi,
• eksplicitno od strane programera, odgovaraju}im instrukcijama programskog
jezika,
• kombinovano.
7 3 Automatska identifikacija i specifikacija
paralelizma
U ovom pristupu, sav teret identifikacije i specifikacije na~ina na koji }e se
eksploatisati paralelizam (prestrukturirawe, particionisawe, mapirawe) preu-
zimaju programski prevodioci, a korisnici realizuju programe koriste}i standar-
dne jezike. Pored toga {to korisnik ne ula`e nikakav dodatni napor u odnosu na
sekvencijalno programirawe, ovaj pristup omogu}ava direktnu eksploataciju
postoje}ih sekvencijalnih programa (ponovo prevedenih paraleliziraju}im
prevodiocem) na paralelnim sistemima. Osnovni problem je {to paraleliziraju}i
kompajleri te{ko mogu, u op{tem slu~aju, identifikovati visok nivo paralelizma
(npr. zbog nemogu}nosti da odrede vrijednosti pokaziva~a u fazi prevo|ewa, zbog
ogromnog broja kompleksnih me|uzavisnosti i sl.). Cijena koja se pla}a za komodi-
tet programera je, ~esto, zna~ajno umawewe ubrzawa izvo|ewa aplikacije i iskori-
{tenosti resursa paralelne ma{ine.
Paraleliziraju}i kompajleri koriste razli~ite postupke transformacije
izvornog programa u ciqu postizawa {to ve}eg iznosa paralelizma u
trasformisanom kodu, naravno uz o~uvawe semanti~kog integriteta izvornog
programa.
Optimizacija po tragu (trace scheduling ) npr., je tehnika globalne optimizacije,
koja se zasniva na selidbi operacija (prije/poslije granawa) u ciqu pove}awa bazi-
~nih blokova (i time iznosa paralelizma) po najvjerovatnijem putu izvo|ewa.
Optimizacija programskih petqi je od vitalnog zna~aja za eksploataciju parale-
lizma, jer petqe potencijalno sadr`e veliki iznos paralelizma i izvo|ewe petqi
je naj~e{}e dominantni dio izvo|ewa programa.
Osnovne tehnike optimizacije su vektorizacija, razmotavawe petqi i softver-
ska proto~nost. Tehnika vektorizacije nastoji iskazati operacije u petqi skupom
vektorskih operacija; razmotavawem petqi za odre|eni broj iteracija pove}ava se
8/19/2019 Asembler parsiranje
13/33
170
bazi~ni blok u tijelu petqe, i na taj na~in pove}ava iznos paralelizma koji se
mo`e eksploatisati pri izvo|ewu. Tehnikom softverske proto~nosti, transfor-
mi{e se tijelo petqe u ciqu omogu}ewa direktne eksploatacije paralelizma
izme|u iteracija i u okviru jedne iteracije (Sl. 7.5).
Neki od ad-hok optimizacionih postupaka su: zamjena indukcionom varijablom u
izrazima u petqi, preimenovawe skalarnih varijabli, zamjena slijede}ih referen-
cirawa skalara wegovim izrazom, dijeqewe petqi, dijeqewe domena podataka, i sl.
a : i←i +1
b : j←i +h
c : k←i +g
d : l← j +1
0: a
1: b, c
2: d, a
3: b, c
4: d
1: a
2: b, c
3: d, a
1: a
2: b, c 3: d
a) b) c)
a) Sekvencijalna petqa b) Dvostruko razmotana petqa c) Proto~na petqa
Sl. 7.5
Optimizacija petqe.
Modulza prikaz
Analiza
Katalogtransform.
FORTRAN 77
program
Internapredstava
BACK END
Paralelizovani
programSUPRENUM FORTRAN
Interakt.modul
FRONT END
Sl. 7.6 Struktura sistema SUPERB.
Kao primjer automatske identifikacije i specifikacije parelelizma, navedimo
SUPERB (Suprenum Parallelizer Bonn), interaktivni paralelizator koji
8/19/2019 Asembler parsiranje
14/33
171
transformi{e standardne FORTRAN 77 sekvencijalne programe u semanti~ki
ekvivalentne paralelne SUPRENUM FORTRAN programe, za SUPRENUM MIMD
ma{inu . Struktura sistema je predstavqena na Sl. 7.6.
Front End trasformi{e FORTRAN 77 program u internu reprezentaciju. Modul za
analizu sadr`i alate za analizu toka programa i analizu zavisnosti: izlaz iz ovog
modula su informacije o nizovima definicija varijabli i nizovima kori{tewa,
zavisnosti izme|u naredbi, `ivotu varijabli, raspolo`ivo{}u izraza i sl. Na
osnovu tih informacija vr{i se paralelizacija, i to u dvije faze:
• identifikuje se krupnozrnasti paralelizam i raspodjequje u skup procesa
(MIMD paralelizacija). Paralelizacija se bazira na razdiobi domena
podataka, pri ~emu svaki segment predstavqa lokalni adresni prostor
procesa,
• svaki proces se analizira, identifikuju se programske petqe koje se
prestruktui{u kao vektorske operacije (SIMD paralelizacija-vektoriza-
cija). Time se posti`e visok stepen paralelne obrade u ~vorovima koji
izvode procese i koji imaju mogu}nost efikasnog procesirawa vektorskih
operacija.
Interaktivni sistem ipak dopu{ta korisniku mogu}nost pra}ewa i pode{avawa
procesa transformacije. Back End modul, na osnovu transformisane interne repre-
zentacije, generi{e paralelizovan SUPRENUM FORTRAN program. Sli~an pristup
koristi Parafrase prevodilac razvijen na univerzitetu u Ilinoisu, Buldog prevodilac
(Yale) i dr.
Neka rje{ewa omogu}avaju da se odre|eni problemi specifikuju jezikom visokog
nivoa, baziranim na apstraktnim tipovima podataka - objektnim klasama, koji
sadr`e kako definiciju potrebnih struktura podataka za navedene probleme, tako
i operacija pridru`enih odnosnoj klasi. Ovakva specifikacija ne sadr`i
specifi~ne konstrukcije za paralelno programirawe. Sistem automatski prevodi
ovakvu specifikaciju visokog nivoa u paralelni programski jezik (SUPRENUM
FORTRAN).
U programskom jeziku BLAZE poku{ava se na}i kompormisno rje{ewe izme|u
sekvencijalnog programirawa i eksplicitne identifikacije i specifikacije
paralelizma u paralelnim programskim jezicima. Sa izuzetkom naredbe " forall ", tok
kontrole u BLAZE jeziku je potpuno sekvencijalan. Intencija jezika je da se ostvari
8/19/2019 Asembler parsiranje
15/33
172
visoko paralelizovano izvo|ewe na razli~itim SIMD i MIMD arhitekturama uz
potpuno osloba|awe korisnika od detaqa paralelnog izvo|ewa (korisnik nema
predstavu o mogu}im vi{estrukim nitima toka kontrole u fazi izvo|ewa npr.).
Realizaciju ovog ciqa u potpunosti preuzima prevodilac i run-time okru`ewe.
Jezik ima sintaksu sli~nu PASCAL-u. Da bi prevodilac mogao izvr{iti
kvalitetnu paralelizaciju, napravqene su odre|ene restrikcije: pokaziva~i nisu
implementirani jer spre~avaju efikasnu identifikaciju paralelizma. Dodatno,
procedure imaju funkcionalnu semantiku: efekat izvo|ewa procedure mo`e biti
samo pridjeqivawe povratne vrijednosti procedure. U okviru procedure dozvoqen
je pristup samo lokalnim podacima. Gnije`dewe procedura nije dozvoqeno. Ovakav
koncept procedura je karakteristi~an za funkcionalne jezike (bazirane na toku
podataka). Ipak, za razliku od funkcionalnih jezika BLAZE dopu{ta vi{estruko
pridjeqivawe istoj varijabli. Dakle, jezik omogu}ava programirawe na na~in
veoma blizak konvencionalnom, {iroko kori{tenom PASCAL-u, a s druge strane
automatsku identifikaciju i specifikaciju paralelizma u toku prevo|ewa, i
eksploataciju istog u fazi izvo|ewa programa. Sli~ne karakteristike imaju i
funkcionalni jezici SISAL, VAL ili ID.
7 4 Projektovawe i razvoj paralelnih programa
I pored toga {to kori{tewe paraleliziraju}ih prevodilaca osloba|a korisnika
dodatne dimenzije kompleksnosti programirawa u paralelnom okru`ewu, ipak ono
ima i nekoliko ozbiqnih nedostataka. Osnovni nedostatak je nemogu}nost prevodi-
laca da mijewa semantiku programa, odnosno strukturu sekvencijalnih algoritama,
koji ~esto ne sadr`e mnogo inherentnog paralelizma. Prestrukturirawem postoje-
}ih algoritama ili konstrukcijom novih, mo`e se obezbijediti znatno pove}awe
iznosa (pa prema tome i eksploatacije) paralelizma. Konkurentnost se pojavquje
kao fundamentalni zahtjev za algoritme i programe.
Daqe, mnogi postoje}i sekvencijalni jezici sadr`e konstrukcije koje
limitiraju mogu}nost detekcije paralelizma u postoje}im programima (pokaziva~i,
mnogostruko ugnije`dene procedure sa mogu}no{}u pristupa dijeqenim
varijablama, "alias" varijable i sl.). Sekvecijalni programi nisu automatski
prilagodqivi za izvo|ewe za slu~aj pove}awa broja procesora u sistemu i obima
problema. Mogu}nost pro{irewa ( scalability) u navedenom smislu se tako|e name}e
8/19/2019 Asembler parsiranje
16/33
173
kao jedan od bitnih zahtjeva za paralelne programe. Kompleksnost paralelnog
programirawa izrazito potencira modularnost kao fundamentalni princip
programirawa. Aspekti modularnosti sekvencijalnog programirawa moraju biti
pro{ireni, s obzirom na specifi~nost paralelnih sistema.
Prirodan ciq je da se navedena svojstva iska`u adekvatnim konstrukcijama
odgovaraju}eg programskog jezika, ne optere}uju}i programera detaqima komunika-
cije i koordinacije me|u procesorima. Pored programskog jezika, od su{tinskog
zna~aja za razvoj i realizaciju paralelnih programa je postojawe generalnog modela
paralelne ma{ine, koji bi omogu}io razvoj generalnih tehnika i metoda programi-
rawa paralelnih ma{ina, primjenqivih na najve}em broju sistema. Tako|e, ovakav
generalni model bi olak{ao proces standardizacije operativnih sistema i
razvojne radne okoline.
I pored navedenih argumenata u prilog eksplicitno paralelnog programirawa,
MIMD sistemi za sada mogu da, na me|uprocesorskom nivou, efikasno eksploati{u
samo krupnozrnasti paralelizam. Za efikasno izvo|ewe ra~unawa po procesnim
elementima novijih (RISC baziranih) arhitektura i daqe }e biti od interesa
optimalno ure|ewe niza instrukcija u fazi prevo|ewa.
7 4 1 Programski modeli paralelnih ma{ina
Robusnost i jednostavnost von-Neuman-ovog modela (sekvencijalnog) ra~unara
omogu}io je razvoj generalnih tehnika programirawa, standardizaciju programskih
jezika pa i arhitektura i operativnih sistema (UNIX npr.) sekvencijalnih ma{ina.
Odgovaraju}a paradigma neophodna je i za paralelne sisteme. U daqem tekstu dat je
kratak pregled postoje}ih varijanti.
PRAM (Paralel Random Access Machine) model je idealizovana i pojednostavqena
predstava paralelnih sistema sa dijeqenom memorijom, gdje svaki procesor u
svakom ciklusu izvodi ili jednu elementarnu operaciju, ili ~ita/pi{e iz lokalne
ili dijeqene memorije. Razli~ite varijante PRAM modela defini{u pristup
memoriji sa vi{e ili mawe restrikcija: kod EREW (Exclusive Read Exclusive Write)
PRAM modela nije dozvoqen istovremeni pristup dijeqenoj memoriji od strane
razli~itih procesora niti za ~itawe niti za upis. CREW (Concurrent Read Exclusive
Write) model dozvoqava istovremeno ~itawe ali ekskluzivan upis, dok CRCW nema
ograni~ewa na pristup zajedi~kim lokacijama. Ovakav upro{ten model nije
8/19/2019 Asembler parsiranje
17/33
174
primjenqiv kao generalna platforma za paralelno programirawe, iako omogu}ava
dobijawe uvida u strukturu i kompleksnost paralelnog ra~unawa.
Model programirawa koji odgovara ovom ma{inskom modelu zasniva se na skupu
procesa koji dijele podatke u istom adresnom prostoru, i kojem pristupaju asinhro-
no. Koordinacija aktivnosti i kontrolisan pristup zajedni~kim resursima,
zahtijeva eksplicitno i pa`qivo programirawe i realizuje se sinhronizacionim
mehanizmima tipa semafora, monitora i sl. Navedeni koncept ne obezbje|uje u
su{tini zahtjeve za modularno programirawe i ne uzima u obzir druge aspekte
(lokalnost npr.), veoma zna~ajne za druge modele paralelnih ma{ina.
Multira~unar
Ovaj model paralelnog sistema je idealizovana predstava
MIMD paralelnih sistema i mo`e se predstaviti istom {emom (Sl. 6.14, 6.15).
Svaki ra~unar izvodi svoj vlastiti program iz lokalne memorije. Lokalni procesi
imaju direktan pristup podacima u lokalnoj memoriji, a komunikacije sa procesima
u drugim ra~unarima se ostvaruju slawem i prijemom poruka preko spre`ne mre`e
(u op{tem smislu, ovim mehanizmom se ostvaruje pristup udaqenim memorijama,
distribuiranim po drugim procesnim elementima). U idealizovanoj mre`i, cijena
transfera poruka zavisi samo od du`ine poruke. Bitna karakteristika modela je
lokalnost tj. svojstvo sistema da je cijena pristupa lokalnoj memoriji mnogo mawa
od cijene pristupa udaqenoj memoriji.
Programi razvijeni za ovaj model, mogu se efikasno implementirati i na
multiprocesorske sisteme, budu}i da isti podr`avaju komunikacione mehanizme na
bazi poruka.
Postoji nekoliko modela programirawa koji odra`avaju arhitekturne
karakteristike multira~unarskog modela paralelnih sistema. Oni se zasnivaju na
prostim apstrakcijama kojima se mogu iskazati konkurentnost, lokalnost/global-
nost te mogu}nost pro{irewa i modularnog programirawa.
Model zasnovan na zadacima i kanalima se sastoji iz varijabilnog skupa zadataka
koji se izvode konkurentno. Zadatak se izvodi u lokalnoj memoriji nekog odprocesnih elemenata nad lokalnim podacima. Komunikacija sa zadacima na drugim
procesorima se realizuje preko U/I portova, mehanizmom poruka. U/I portovi
razli~itih zadataka mogu biti spojeni dinami~ki kreiranim kanalima. Zadaci se
mapiraju na procesore; mapirawe ne smije uticati na semantiku programa.
8/19/2019 Asembler parsiranje
18/33
175
Sli~ne su{tinske karakteristike imaju model prosqe|ivawa poruka (message
passing model ) i objektno orijentisani model u kojem objekti konceptualno
odgovaraju zadacima.
SPMD ( single program multiple data) programski model se reprezentuje jednim
programom, koji se izvodi nad disjunktnim skupovima podataka. On odgovara
podskupu gore navedenih modela, za slu~aj fiksnog broja identi~nih zadataka koji
iste operacije izvode nad razli~itim podacima. Ovaj model je primjenqiv za MIMD
arhitekture sa velikim brojem procesnih elemenata. Koncepti ovog modela vodili
su razvoju FORTRAN-a 90 i High Performance Fortran-a (HPF).
SIMD model paralelnih sistema reprezentuje odgovaraju}u specijalizovanu klasu
arhitektura, koja nije pogodna kao generalna platforma za paralelno procesirawe,
iako su ovi sistemi izrazito pogodni za rje{avawe dosta {iroke klasespecijalizovanih i dobro strukturiranih nau~nih problema. Adekvatan model
programirawa za ovaj model arhitektura se zasniva na paralelizmu podataka, koji
podrazumijeva mogu}nost fine granularnosti operacija. Programer treba da
specifikuje strukture podataka nad kojima se (iste) operacije mogu izvesti para-
lelno, a prevodilac generi{e odgovaraju}i kod. Ovaj model programirawa pogodan
je i za MIMD arhitekture sa velikim brojem procesnih elemenata i regularnom
strukturom povezivawa.
Kriti~ki osvrt na aktuelne modele programirawa i arhitektura dao je
Dennis, uz tvrdwu da nijedan navedeni model ne zadovoqava principe modularnog
programirawa (a samim tim ni generalnost programirawa), te da modeli
arhitektura ne uzimaju adekvatno u obzir fundamentalna pitawa latentnosti
memorije i me|uprocesorske sinhronizacije. Predla`e se generalni semanti~ki
model predstavqen na Sl 7.7.
Predlo`eni model ima izvori{te u argumentaciji da se koncept modularnosti
najpogodnije implementira ako je mogu}e aktivirati funkcije (procedure) uz
specifikaciju korektnih parametara, bez obzira na to gdje se funkcije ili
argumenti nalazili. Svaki objekat ima jedinstven identifikator (pokaziva~ na
objekat). Aktivirawe modula se onda defini{e parom (procedure_pointer,
argument_pointer) (argument_pointer se odnosi na strukturu koja sadr`i skup
vrijednosti argumenata za proceduru).
8/19/2019 Asembler parsiranje
19/33
176
EPIR
x:Z:
n
Programski DAG
Aktivnost
Pointerprocedure
Okvir
Ofset Varijableokvira
Tekst
Stablo aktivacije
Heap DAG
Zapisi
Poqe
1 n. . .
Sl. 7.7 Generalni semanti~ki model paralelnog procesirawa.
Model se sastoji iz 3 komponente (od kojih se svaka mo`e predstaviti acikli~kim
orijentisanim grafom). Prvi dio sadr`i kod procedura kojim se defini{u aktiv-
nosti. Svaki luk u grafu indicira poziv neke procedure iz nadre|enog modula.
Korespondentni graf je stablo aktivacije, gdje svaki ~vor sadr`i lokalne podatke
za aktiviranu proceduru. Tre}i dio je sistemski heap, ~iji ~vorovi reprezentuju
strukture podataka, a podre|eni ~vorovi elemente struktura. U ovakvom modelu
aktivnost se defini{e parom instrukciona_referenca (IR), pokaziva~_okru`ewa
(EP). Instrukciona referenca identifikuje programski modul i instrukciju u
modulu, spremnu za izvr{ewe. Pokaziva~ okru`ewa identifikuje aktivaciono
stablo pridru`eno programskom modulu. Neka operacija u modelu mo`e da: izvodi
lokalna ra~unawa, selektuje slijede}u operaciju na bazi neke lokalne vrijednosti,
manipuli{e strukturama na heap-u i inicira ili zavr{i aktivirawe nekog modula.
Sistem dopu{ta postojawe vi{e konkurentnih aktivnosti u istom modulu i vi{e
instanci jednog modula. Implementacione varijante za koordinaciju aktivnosti su
fork i join operacije u nitima , ili uslovi aktivacije po konceptu ma{ina upravqanih
podacima.
8/19/2019 Asembler parsiranje
20/33
177
Model nije baziran na nekoj postoje}oj arhitekturi ili tehnologiji, ve}
suprotno, ima ambiciju da trasira puteve za projektovawe arhitektura koje }e
zadovoqiti fundamentalne zahtjeve za paralelno programirawe. Model tako|e
uva`ava fizi~ke limite kapaciteta memorije, fiksnu {irinu rije~i i sl. ali i
implementacione aspekte. Vi{enitni koncepti i principi upravqawa na bazi
toka podataka se predla`u kao bazni za razvoj arhitektura novih ma{ina.
7 4 2 Projektovawe paralelnih programa
Projektovawe i realizacija paralelnih programa je kompleksan zadatak, koji nije
mogu}e formalizovati skupom precizno definisanih koraka i postupaka. Stoga je
neophodan odre|eni metodolo{ki pristup koji apostrofira razmatrawe bitnih
faktora i razli~itih opcija od kojih zavisi kvalitet rje{ewa, i koji obezbje|uje
kriterijume za izbor izme|u razli~itih alternativa.
Projektovawe paralelnih programa je u uskoj vezi sa algoritamskom podlogom i
veoma ~esto zahtijeva prestrukturirawe postoje}eg algoritma ili razvoj adekva-
tnijeg. Bez obzira na ma{inski ili programski model, rezultat projekta treba da
bude skup modula (zadataka) koji obavqaju odre|ena ra~unawa i izme|u kojih
postoje precizno definisane interakcije, te wihov raspored po procesnim elemen-
tima paralelnog sistema. Naravno, konkurentno izvo|ewe modula raspodjeqenih po
procesnim elementima, mora realizovati `eqenu funkciju.
Realizacija navedenog ciqa se mo`e ostvariti strukturirawem
projektovawa u ~etiri faze: particionisawe, ustanovqavawe veza (komunikacija),
ukrupwavawe i mapirawe (Sl. 7.8). U praksi, proces nije strogo sekvencijalan:
nezadovoqavaju}e alternative u nekoj fazi mogu implicirati ponovno razmatrawe
varijanti u prethodnim fazama.
Particionisawe ima za ciq da se cijeli proces izdijeli na {to ve}i broj
zadataka izme|u kojih postoji potencijalno velika mogu}nost konkurentnog
procesirawa. Zadaci obuhvataju kako ra~unawa (skup operacija) tako i podatke nad
kojima se ra~unawa izvode. Dobra podjela implicira ravnomjernu raspodjelu, kako
ra~unawa, tako i podataka po zadacima. Osnovne komplementarne tehnike razdiobe
su dekompozicija domena (podataka) i funkcionalna dekompozicija. Generalno,
zadaci ne treba da sadr`e redundantna ra~unawa ili podatke i, broj zadataka koji
se dobijaju dekompozicijom treba da je u proporciji sa veli~inom problema.
8/19/2019 Asembler parsiranje
21/33
178
Zadovoqavawem navedenih principa, dolazi se do rje{ewa sa izra`enom
konkurentno{}u i adaptibilno{}u u odnosu na obim problema.
Povezivawe je faza u kojoj se ustanovqava zavisnost izme|u zadataka i potrebni
transferi (komunikacije) podataka izme|u wih. Za specifikaciju komunikacije
potrebno je definisati, kako same podatke koji se izmjewuju odre|enim komunika-
cionim mehanizmom (porukama npr.), tako i komunikacione veze (kanale) izme|u
zadataka.
PROBLEM
Mapirawe
Komunikacija
Particionisawe
Ukrupwavawe
Sl. 7.8 Proces projektovawa paralelnih programa.
Komunikacionu strukturu dekomponovanog sistema karakteri{e lokalnost, struk-
turnost, dinami~nost i sinhronizam. Dobra dekompozicija obezbje|uje da zadaci
komuniciraju sa malim skupom susjednih zadataka (lokalnost), tj. obezbje|uje
balansiranu dekompoziciju komunikacija, tako da susjedni zadaci formiraju
regularnu strukturu. Kod stati~kih komunikacija, svaki zadatak izmjewuje podatke
samo sa unaprijed odre|enim zadacima. Za realizaciju sinhronih transfera, zadaci
8/19/2019 Asembler parsiranje
22/33
179
koji su ukqu~eni u transfer moraju da kooperi{u za realizaciju transfera (kod
asinhronih transfera slawe/prijem su nezavisni). Komunikacije tako|e treba da
imaju mogu}nost konkurentnog izvr{ewa i mogu}nost preklapawa sa ra~unawima.
Ykrypwavawe grupisawe zadataka se vr{i u ciqu smawewa komunikacionih
aktivnosti (i vremenskih gubitaka) uz zadr`avawe {to je mogu}e ve}eg iznosa
paralelizma. Dodatno, potrebno je odr`ati prilagodqivost ( scalability) rje{ewa
obimu problema, i prihvatqivu cijenu programske implementacije. U ovoj fazi
potrebno je, tako|e, uzeti u obzir implementacione aspekte (broj procesora, na~in
komunikacije i sl.).
/
Smawewe odnosa komunikacija/ra~unawe po zadatku, grupisawem susjednih zada-
taka koji me|usobno komuniciraju u jedan (ve}i) zadatak, zasniva se na efektu
odnosa povr{ina i volumena (komunikacioni zahtjevi su proporcionalni povr{i-
ni, a kompjutacioni volumenu pod-domena), tako da se pove}awem pod-domena posti-
`e `eqeni efekat. Daqe, grupisawe zadataka sa sekvencijalnom zavisno{}u ne
smawuje paralelizam, a omogu}ava smawewe iznosa komunikacije (u slu~aju postoja-
wa dovoqnog broja procesnih elemenata). Smawewe komunikacionih gubitaka mo`e
se ostvariti i vi{estrukim ponavqawem izvo|ewa istog ra~unawa u razli~itim
procesnim elementima. Neki od agoritama za grupisawe datog skupa zadataka,
predstavqenog acikli~nim orijentisanim grafom (DAG), koji se baziraju na
prethodnim principima, opisani su ukratko u tekstu koji slijedi.
Grupisawe po vertikalnim slojevima je metoda koja se bazira na grupisawu sekven-
cijalnih ~vorova u ve}i ~vor. DAG, koji reprezentuje sistem zadataka, se transfo-
rmi{e u ekvivalentni graf sa horizontalnim slojevima, tako da je du`ina puta od
korijena grafa do svih ~vorova u jednom sloju ista. Zatim se svi ~vorovi koji
pripadaju kriti~nom putu grupi{u u jedan ~vor (particiju), ~vorovi iz formirane
particije se virtuelno uklawaju iz grafa i postupak ponavqa na preostalom skupu.
Grupisawe eliminisawem komunikacionog ka{wewa , se zasniva na grupisawu
~vorova, uz uslov da se ukupno vrijeme izvr{ewa ne produ`ava. Naime, grupisawem
susjednih ~vorova (nekog ~vora i wegovih prethodnika/nasqednika) pove}ava se
vrijeme ra~unawa, ali se elimini{u vremena komunikacije. Grupisawe se nastavqa
dok se ukupno vrijeme izvo|ewa ne pove}ava.
Algoritam grupisawa koji se zasniva na vi{estrukom ponavqawu izvo|ewa
zadataka smawuje iznos komunikacije izme|u zadataka multiplicirawem izvo|ewa
8/19/2019 Asembler parsiranje
23/33
8/19/2019 Asembler parsiranje
24/33
181
7 4 3 Implementacioni mehanizmi
Koncept rje{avawa problema paralelnog izvo|ewa skupa zadataka potrebno je
izraziti na pogodan na~in u programskom jeziku adekvatnih mogu}nosti. Kompleks-
nost problema implicira neophodnost modularnog programirawa, tj. izgradwe
kompleksnih modula (i na kraju cijelog programa) od komponentnih. U sekvenci-
jalnom programirawu module mo`emo posmatrati kroz funkcije i kroz ulazno/-
izlazni skup podataka koji je povezan sa izvo|ewem funkcije. Kod paralelnih
programa, u razmatrawe treba ukqu~iti tako|e zadatke-aktivnosti koji se
generi{u u modulu i wihovo mapirawe na procesore, dekompoziciju podataka po
zadacima, te karakteristike komunikacije.
U paralelnim sistemima, moduli se mogu na razli~ite na~ine komponovati u
programski sistem (Sl. 7.10).
Sekvencijalna kompozicija je karakteristi~na za SPMD programe, gdje se isti
program izvodi u svim procesnim elementima tako da se razli~ite komponente
(moduli) pozivaju i izvode sekvencijalno jedna za drugom. Paralelna kompozicija
mapira svaku komponentu na razli~it procesor, uz paralelno izvo|ewe istih.
Konkurentna kompozicija omogu}ava konkurentno izvo|ewe razli~itih
komponenata na svakom od procesorskih elemenata.
Mnogi programski jezici obezbje|uju podr{ku za specifikaciju paralelizma
(identifikovanog kroz fazu projektovawa), komunikaciju izme|u zadataka, imple-
mentaciju koncepta modularnog programirawa i mapirawe zadataka po procesnim
elementima.
8/19/2019 Asembler parsiranje
25/33
182
Paralelna kompozicija
Konkurentna kompozicija
Sekvencijalnakompozicijamodula
Vrijeme
Sl. 7.10 Varijante kompozicije programa u programski sistem. Sjen~ewem su ozna~ena dvaprogramska modula koji se izvode na ~etiri procesorska elementa.
Osnovni koncept paralelnog kodirawa opisao je M.R. Conway (1963) , sugeri{u}i
par instrukcija (ma{inskog jezika) FORK, JOIN za kreirawe konkurentnih procesa.
S obzirom da for petqa ~esto sadr`i nezavisne iteracije, za specifikaciju
kreirawa nezavisnih procesa za svaku interaciju koristi se varijanta parallel for
instrukcija. Blok strukturiranu konstrukciju predlo`io je Dijkstra ~ija je forma:
beginS0;
cobegin S1; S2; ...., Sn; coend
Sn+1 ;
end .
S0 se izvodi prije (grupa) naredbi S1, S2, ... , Sn, koje se pak mogu izvesti konkurentno.
Nakon kompletirawa svih naredbi S1, S2, ... , Sn izvodi se naredba . (Analogno
ovoj konstrukciji koriste se konstrukcije parbegin-parend ). Hoare, na temequ gorwe
konstrukcije, defini{e paralelnu komandu za specifikaciju paralelnih procesa:
1+nS
:= [ { || }]
OCAM jezik, koristi PAR i SEQ naredbe za eksplicitnu specifikaciju paralel-
nog/sekvencijalnog izvo|ewa.
U konkurentnom Pascal-u, defini{u se tipovi i instance procesa; procesi se
iniciraju (startuju) init naredbom, a za sinhronizaciju pristupa dijeqenim resursi-
8/19/2019 Asembler parsiranje
26/33
183
ma izme|u procesa koriste se monitori. U ADA programskom jeziku paralelni
procesi se specifikuju preko TASK konstrukcije. Svaki task ima svoju deklaraciju
i definiciju. Instance task -ova se kreiraju i aktiviraju pozivom procedura u
kojima su definisani. Komunikacija izme|u task -ova se realizuje ili mehanizmom
randevua ili preko dijeqenih varijabli.
Pored ovih osnovnih konstrukcija za podr{ku paralelnom procesirawu, kojima
se omogu}ava eksplicitna specifikacija paralelizma, savremeni paralelni
programski jezici sadr`e i druge konstrukcije za podr{ku.
CC++ (Compositional C++) je ekstenzija standardnog C++ jezika, koji pored apstrak-
cija "procesorski objekat" i "globalni pokaziva~" pomenutih u dijelu 7.1. ima i
apstrakcije "thread ", " sync variable", "atomic function" i "transfer functions".
Niti (threads) se kreiraju i izvode u okviru procesorskog objekta. Inicijalno,
program se izvodi sa jednom niti kotrole; vi{estruke niti se kreiraju pomo}u par,
parfor i spawn naredbi. Dok se niti formirane sa par i parfor ne kompletiraju, ne
mo`e se izvesti slijede}a aktivnost.
Spawn dozvoqava kreirawe nezavisnih niti. Ovim konstrukcijama se
implementira koncept konkurentnog izvr{ewa, a procesorska apstrakcija
implementira koncept lokalnosti. Niti se izvode (podrazumijevaju}e) u procesor-
skom objektu u kojem su kreirane. Na~in komunikacije i sinhronizacije izme|u
niti je pomenut prethodno. Za sinhronizaciju ~itawa/upisa iz dijeqene varijable
koristi se modifikator sync u deklaraciji dijeqene varijable. (Ako nit ~ita iz
sync varijable u koju vrijednost nije upisana, ona se blokira dok vrijednost ne bude
upisana). Modifikator atomic omogu}ava implementaciju kriti~nih sekcija: dvije
atomic funkcije istog objekta ne mogu se izvesti istovremeno. Transfer podataka
proizvoqnog tipa izme|u procesorskih objekata se realizuje transfer funkcijama.
Mapirawe na fizi~ke procesore se realizuje tako da se niti mapiraju na
procesorske objekte, a procesorski objekti na fizi~ke procesore. Za definisawe
fizi~ke lokacije procesorskih objekata, koriste se konstruktorske funkcije ( proc-
t i node-t ).
FORTRAN M je ekstenzija standardnog FORTRAN-a 77. Omogu}ava eksplicitnu
specifikaciju zadataka i wihovog paralelnog izvr{ewa, kanala, slawa i prijema
poruka te mapirawa na virtuelnu ma{inu.
Procesi se deklari{u istom sintaksnom konstrukcijom kao i potprogrami, s
tim da se koristi kqu~na rije~ PROCESS umjesto SUBROUTINE. Procesi koji se
8/19/2019 Asembler parsiranje
27/33
184
pozivaju u bloku PROCESSES/ENDPROCESSES se aktiviraju za konkurentno
izvr{ewe. Petqom PROCESSDO/ENDPROCESSDO se kreiraju vi{estruke instance
istog procesa. Za komunikaciju izme|u procesa kreiraju se kanali (konstrukcijom
CHANNEL) sa ulaznim i izlaznim vratima(portom). Procesi koji imaju adrese
ulaznih/izlaznih vrata (up/ip) otvorenog kanala mogu da komuniciraju primitivama
SEND(ip) i RECEIVE(up). MERGER je kanal koji omogu}ava komunikaciju tipa mnogi-
na-jedan. Navedeni koncept kanala omogu}ava kreirawe dinami~ke strukture
kanala i povezivawe tipa mnogi-na-mnogi, te implementaciju sinhrone/asinhrone
komunikacije.
Za specifikaciju virtuelnog ra~unara sa strukturom procesora u n dimenzija,
koristi se direktiva PROCESSORS (I1, I2, ... , In). LOCATION (I1, I2, ... , In) direktiva
specifikuje elemenat u vi{edimenzionalnoj strukturi procesora, na kojem se
proces izvodi. SUBMACHINE konstrukcija, omogu}ava mapirawe procesa na
podskup procesora virtuelne ma{ine.
FORTRAN 90 i wegova ekstenzija HPF ( High Performance Fortran) su jezici koji
eksploataciju paralelizma baziraju na paralelizmu koji se dobija primjenom istih
operacija na razli~itim segmentima nekog skupa podataka (ovaj tip paralelizma se
ozna~ava terminom paralelizam podataka (data parallelism)).
Strukture podataka podr`ane u navedenim jezicima za ovakav tip eksploatacije
paralelizma su nizovi podataka. Ako su A, B, C nizovi, onda A = B * C prevodilac
automatski prepoznaje kao operaciju sa paralelizmom podataka. Prevodilac tako|e
poku{ava automatski detektovati paralelizam u programskim petqama. Prevodi-
lac transformi{e program u SPMD formu, gdje vi{e procesora izvode isti pro-
gram nad razli~itim segmentima podataka. Ako izvo|ewe na nekom procesoru zahti-
jeva komunikaciju sa drugim procesorom, u ciqu dobijawa podataka iz susjednog pod-
domena, u fazi prevo|ewa se automatski ume}u potrebni mehanizmi. PROCESSORS
direktiva omogu}ava deklaraciju organizacije virtuelnih procesora (uobi~ajeno
se deklari{e jedan apstraktni za jedan fizi~ki procesor). DISTRIBUTE direktiva
se koristi za specifikaciju domena po virtuelnim procesorima. Pored toga {to se
konkurentnost eksploati{e direktno iz operacija nad poqima, paralelne operaci-
je se iniciraju FORALL (triplet, triplet, ... , triplet, mask ) assignment naredbom
pridjeqivawa, gdje se paralelno izvode sve naredbe pridjeqivawa sa indeksima
definisanim tripletima, pod uslovima da je mask izraz istinit. Za eksplicitnu
specifikaciju nezavisnosti iteracija petqe koristi se direktiva INDEPENDENT.
8/19/2019 Asembler parsiranje
28/33
185
Pored navedenih paralelnih jezika, postoje i drugi paralelni programski
jezici: paralelni logi~ki jezici (Multilisp, Concurrent Prolog i sl.) i paralelni
funcionalni jezici (VAL, SISAL, ID, npr.).
Funkcionalni jezici ne dozvoqavaju operacije koje mogu proizvesti grani~ne
( side) efekte; funkcije ne mogu mijewati vrijednost varijabli koje nisu lokalne, a
ulazno/izlazni parametri mogu biti samo vrijednosti, a ne reference. Pridjeqiva-
we nekoj varijabli dozvoqeno je samo jedanput, tako da se zavisnost po podacima
veoma jednostavno identifikuje, naravno uz cijenu znatno ve}ih memorijskih
zahtjeva.
7 5 Operativni sistemi
Da bi ostvarili generalne zahtjeve koji se postavqaju pred operativne sisteme kao{to su: obezbje|ewe programskog interfejsa prema ma{ini, upravqawe resursima,
sinhronizacija svih aktivnosti i mehanizama za implementaciju korisni~kih
koncepata visokog nivoa, aspekti neosjetqivosti na gre{ke itd. operativni siste-
mi paralelnih ma{ina moraju uzeti u obzir i specifi~ne arhitekturne karakteri-
stike kao i specifi~nosti koncepata paralelnog programirawa. Navedeni elemen-
ti otvaraju niz dodatnih dilema, ne samo u pogledu funkcija nego i same organiza-
cije operativnih sistema. Centralizovana organizacija se koristi uglavnom kod
paralelnih ma{ina sa dijeqenom memorijom, sa dvije varijante: (prva) master-slave,
gdje jedan procesor izvodi rutine operativnog sistema i dijeli posao "podre|enim"
procesorima, i druga, gdje su procesori ravnopravni i istovremeno mogu da
izvr{avaju rutine (jedinstvenog) operativnog sistema. U distribuiranoj varijanti
koja se koristi kod multira~unarskih sistema, operativni sistem je jedinstven, ali
fizi~ki distribuiran po procesnim elementima. Svaki procesni element preko
lokalnog (mikro) jezgra operativnog sistema obezbje|uje servise lokalnim
procesima, ali obezbje|uje i spregu sa ostalim procesorima kako u ciqu
kooperativnog procesirawa tako i u ciqu obezbje|ewa pristupa i kori{tewa
zajedni~kih resursa: U/I podsistema, sistema datoteka, dijeqenih objekata i
funkcija i sl.
U ciqu efikasne eksploatacije paralelizma u okviru jednog procesa, savremeni
operativni sistemi moraju da podr`e koncept konkurentnog izvo|ewa vi{estrukih
niti . Sve aktivirane niti mogu da se izvode paralelno pod uslovom raspolo`ivosti
8/19/2019 Asembler parsiranje
29/33
186
procesorskih resursa. Iako postoji vi{e varijanti naj~e{}e se koristi
implementacija niti kao "laganih" procesa. U takvoj varijanti, sve niti generisane
u okviru jednog procesa dijele najve}i dio konteksta tog procesa: kod , stati~ke i
globalne podatke, heap, i sve atribute procesa kojima manipuli{e jezgro
operativnog sistema (identifikator vlasnika, deskriptore otvorenih datoteka i
sl.). Privatni konteksti niti minimalno sadr`e stawe registara, identifikator i
prioritet niti . Rudimentarni kontekst niti omogu}ava brzu promjenu konteksta,
odnosno prelaz izvo|ewa sa jedne niti na drugu. Kernel ne u~estvuje u kreirawu,
aktivirawu, sinhronizaciji i ga{ewu niti . Ove funkcije se standardno realizuju
bibliotekom sistemskih funkcija za implementaciju vi{enitnog koncepta
izvo|ewa.
Varijante niti koje raspore|uje jezgro operativnog sistema, nazivaju se "te{ke "
niti (heavy weight threads).
Dakle, arhitekture paralelnih sistema i principi paralelnog programirawa
imali su presudan uticaj na evoluciju operativnih sistema u pravcu obezbje|ewa
podr{ke za rad u navedenom okru`ewu; specijalno kroz koncepte mikrokernela
(mikrojezgra) operativnog sistema, vi{enitnog izvo|ewa, memorijski mapiranih
datoteka, aktivirawa funkcija na udaqenim procesorima i sl. Za ilustraciju,
operativni sistem Intel Paragon ra~unara je multira~unarski UNIX, sa podr{kom za
vi{enitno izvo|ewe, konceptom virtuelne memorije i strani~ewa, mogu}no{}u
mapirawa korisni~kih procesa na jedan ili vi{e procesora. Operativni sistem
ima jedinstvene sistemske strukture i distribuirano upravqawe procesima. Struk-
tura programskog sistema u svakom procesnom elementu data je na Sl. 7.11.
Sistem koristi Mach mikrokernel, razvijen na Carnegie-Mellon univerzitetu,
OSF/1 Unix server i NX-protokol za prosqe|ivawe poruka. Funkcije mikrokernela
su upravqawe procesima i nitima, komunikacija izme|u procesa, upravqawe
virtuelnom memorijom i upravqawe ure|ajima. Server obezbje|uje podr{ku za
mre`nu komunikaciju i pristup datotekama.
8/19/2019 Asembler parsiranje
30/33
187
korisni~ki proces
kernel
serverNX
API
hardver
Mach 3.0
mikrokernel
OSF/1 UNIX samultikorisni~kim
pro{irewima
NX aplikacioniinterfejs
Sl. 7.11 Intel Paragon OSF/1 arhitektura.
7 6 Razvojno okru`ewe
Te{ko}e u razvoju softvera, iskazane terminom "softverska kriza" jo{ 1968
(Int.Cont. on Software engineering, Garmish) forsirale su stvarawe metodologija i
tehnika za razvoj softvera, ali i odgovaraju}ih sredstava za primjenu istih,
odnosno odgovaraju}eg razvojnog okru`ewa. S obzirom na nagla{enu kompleksnost
paralelnog programirawa, takvo okru`ewe se pojavquje kao imperativ. Pored
programskih jezika (opisanih u prethodnom dijelu), razvojno okru`ewe ~ine
sredstva za konstrukciju programa, analizu i izbor odgovaraju}ih varijanti
raspore|ivawa, instrumentalizaciju i testirawe/verifikaciju.
Sredstva za konstrukciju u naj{irem smislu sadr`e alate za analizu, specifika-
ciju, projektovawe, kodirawe aplikacija, vo|ewe projekta i sl. Primjeri su
programski paketi za strukturno ili objektno orijentisanu analizu i projektova-
we, formalni jezici za specifikaciju zahtjeva i algoritama rje{ewa, sintaksno-
semanti~ki orijentisani procesori teksta, paketi za upravqawe i vo|ewe projekta
i sl. Alati za raspore|ivawe zadataka u vi{eprocesorskom sistemu dobili su
adekvatnu pa`wu tek u posqedwe vrijeme. Ovi alati poma`u korisniku u procesu
particionisawa problema na skup zadataka te pri raspore|ivawu zadataka po pro-
cesnim elementima date arhitekture. Ovi alati moraju imati jednostavan, grafi-
~ki orijentisan interfejs prema korisniku. Razli~ite implementacije sadr`e
razli~ite varijacije komponentnih alata opisanih u tekstu koji slijedi.
8/19/2019 Asembler parsiranje
31/33
188
Alat za specifikaciju aplikacija omogu}ava prezentaciju aplikacija u grafi~koj
formi (obi~no u formi orijentisanog acikli~kog grafa). Ova predstava se
koristi u fazi particionisawa i raspore|ivawa sistema zadataka. Kreirawe
grafi~ke ekvivalentne forme programa mogu}e je automatskom transformacijom
iz izvornog programa (PARSA). Odre|eni alati koriste specijalni kod za
izra`avawe paralelizma u programu i specifikaciju wegove strukture (OREGAMI),
a neki alati zahtijevaju od korisnika specifikaciju programa u formi grafa.
Obi~no, grafi~ka reprezentacija zahtijeva i specifikaciju procjene izvo|ewa
pojedinih aktivnosti predstavqenih u grafu.
Alat za particionisawe omogu}ava transformaciju grafa u ekvivalentnu formu
u ciqu smawewa me|uprocesorske komunikacije.
Alat za raspore|ivawe omogu}ava mapirawe zadataka na arhitekturu, na osnovu
odre|enog algoritma. Arhitektura i algoritmi raspore|ivawa mogu biti fiksni
ili korisnik mo`e vr{iti selekciju na osnovu vi{e mogu}ih opcija, ili ~ak
implementirati vlastite opcije. U sklopu ovog modula (ili kao poseban modul)
realizuje se vizuelni prikaz performansi programa pri izvo|ewu na simuliranoj
ili stvarnoj arhitekturi. Vizuelizacija obi~no ukqu~uje prikaz aktivirawa
procesa i stawa procesora u toku izvo|ewa, komunikacije podataka, te parametre
kao {to su ubrzawe, iskori{tewe procesora, ukupno vrijeme izvr{ewa i sl.
Testirawe aplikacija u paralelnim sistemima ne ukqu~uje samo verifikaciju
korektnosti nego i eksperimentisawe sa vi{estrukim parametarskim opcijama u
ciqu postizawa efikasne implementacije. Prvi korak u sferi eksperimentisawa
je instrumentalizacija: registrovawe, mjerewe, akvizicija i analiza podataka i
doga|aja. U praksi se koriste razli~ita sredstva instrumentalizacije: softverski,
hardverski, hibridni, mre`ni monitori; prirodni i sinteti~ki generatori
optere}ewa; softverski alati za analizu strukture podataka i sl.
Primjer implementacije okru`ewa za instrumentalizaciju je IIE (Integrated
Instrumentation Environment for Multiprocessors [108]), razvijen na Carnegie Mellon
univerzitetu (Sl. 7.12).
8/19/2019 Asembler parsiranje
32/33
189
Instrumentali-
zovana pobuda
Menaxer{ema
Baza pod.
Kontroler
pobuda
Relacionimonitor
Rezidentnimonitor
Instrumentali-zovani OS
Sl. 7.12 IIE Programsko okru`ewe.
IEE se zasniva na konceptu integracije vi{e instrumentalnih sredstava u
jedinstveno okru`ewe za upravqawe eksperimentima. Za definisawe skupa
mogu}ih eksperimenata defini{e se {ema eksperimenta, a konkretni eksperiment
predstavqa instancu {eme. Menaxer {eme, na osnovu definisane {eme
(eksperimenta) i podataka o stawu okoline, daje potrebne informacije za
generisawe ulaznih vrijednosti u pojedinim ta~kama programa u toku
eksperimenata. Rezidentni monitor u koordinaciji sa operativnim sistemom, vr{iregistrovawe i mjerewe podataka i veli~ina od interesa, koji se preko menaxera
eksperimenata zapisuju u bazu eksperimenata za kasniju analizu.
Pored navedenih, mnogi drugi projekti bavili su se razvojem okru`ewa za
programirawe u paralelnim sistemima:
• Spice projekt (CMU), sa ciqem konstrukcije programskog i radnog okru`ewa
za nau~na istra`ivawa na mre`i ra~unara,
• PRESTO je sistem za objektno-orijentisano (C++ bazirano) programirawe u
multiprocesorskom (Sequent Balance) okru`ewu,• Argus projekat (MIT), predmet istra`ivawa je okru`ewe za analizu dinami~ke
varijacije paralelnog softvera.
• ISSOS projekat (PARTS Labs, Ohio) se bavi razvojem jezi~kih primitiva i
programskog sistema koji podr`ava razvoj i eksperimentisawe te pode{avawe
paralelnih programa,
8/19/2019 Asembler parsiranje
33/33
190
• i drugi (Gypsy projekat (Texas/Austin), Cedar (Xerox Parc), SARA (UCLA) itd.).
7 7 Ostali aspekti
Ostali aspekti programirawa paralelnih sistema ukqu~uju aspekte pouzdanos-ti/(ne)osjetqivosti na gre{ke, programirawa u stvarnom vremenu, standardizacije
(CORBA standard npr.) i sl.
Za odre|enu klasu aplikacija (vojni sistemi, upravqawe hemijskim i
nuklearnim procesima, elektroenergetski sistemi, komunikacioni sistemi i sl.),
pouzdanost sistema je faktor od osnovnog zna~aja. U ciqu obezbje|ewa ve}e
pouzdanosti i raspolo`ivosti sistema moraju postojati dodatni hardverski i
programski moduli (dijagnosti~ki podsistem), koji mogu detektovati pojavu otkaza
u sistemu i prebaciti funkcije sa elementa koji je otkazao na ispravan modul.
Neosjetqivost na gre{ke ( fault tolerance) je tako|e va`na karakteristika spre`nih
mre`a. Fault tolerance parametar f spre`ne mre`e se defini{e kao broj ~vorova koje
je mogu}e ukloniti iz mre`e, a da mre`a i daqe bude povezana (tj. da nijedan ~vor ne
postaje izolovan). Drugi va`an parametar je dijametar mre`e u slu~aju otkaza ( fault
diameter ) - maksimalni dijametar koji se dobija uklawawem iz spre`ne mre`e f
~vorova.
f
nd
Recommended