Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Dodatak D Karakteristike MPI standarda 171<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
smešteni u neprekidnom memorijskom bloku, već mogu biti raštrkani po<br />
memoriji.<br />
Imajući u vidu prethodne činjenice, MPI standard je predvideo u<br />
međuprocesorskoj komunikaciji i mogućnost korišćenja složenih tipova<br />
podataka definisanih od strane korisnika. Time se mogu na siguran način slati<br />
čitave složene strukture u jednoj poruci, gde će prijemni proces svaku<br />
promenljivu smestiti na pravo mesto, nezavisno od načina alokacije<br />
memorijskog prostora.<br />
I ovakav pristup bi imao neke nedostatke, pošto prijemni proces mora znati<br />
unapred strukturu podataka u poruci koju prima. Na taj način ne bi bilo moguće,<br />
u jednoj poruci, slati nizove promenljive dužine, jer pri prijemu datom procesu<br />
mora biti unapred poznat broj članova niza koga prima. Ova anomalija je<br />
prevaziđena mogućnošću pakovanja u neprekidne uzastopne memorijske<br />
lokacije pre slanja, a po prijemu se vrši postepeno raspakivanje. Pri tome nije<br />
neophodno zadavanje unapred dužine cele poruke, već samo gornje granice te<br />
dužine.<br />
D.1.4 Pojedinačne komunikacije<br />
MPI podržava pojedinačne komunikacije gde je prosleđivanje i selekcija<br />
poruka bazirana na rangovima procesa, tagu poruke i komunikacionom<br />
kontekstu. Pri zadavanju rangova i taga poruke moguće su i opšte vrednosti<br />
(wildcards) koje omogućuju prijem poruke od svih procesa ili sa proizvoljnim<br />
tagom. Komunikacioni kontekst nije moguće zadati kao opštu vrednost, već on<br />
zavisi samo od konkretnog komunikatora. Pri svakoj komunikaciji su procesi za<br />
slanje odnosno prijem poruke jednoznačno određeni grupom procesa i rangom<br />
datog procesa unutar te grupe. Lokalni komunikator vrši komunikaciju unutar<br />
iste grupe, dok globalni komunikator vrši prosleđivanje poruke između procesa<br />
koji pripadaju različitim grupama.<br />
Postoje četiri načina pri pojedinačnim komunikacijama: standardni,<br />
baferisani, po zahtevu prijemnog procesa i sinhroni. Svi ovi načini komunikacije<br />
se mogu podeliti dalje po načinu izvršavanja, gde mogu biti blokirajući ili<br />
neblokirajući. To ukupno daje osam različitih mogućnosti za međuprocesorsku<br />
komunikaciju što može da zadovolji i najzahtevnije potrebe.<br />
Standardni način komunikacije vrši slanje i prijem poruka asinhrono,<br />
odnosno oni se mogu izvršavati nezavisno i u različitim vremenskim<br />
momentima. Na taj način po završetku slanja poruke pošiljalac nastavlja dalje<br />
sa <strong>rad</strong>om, nezavisno od toga kada će poruka biti primljena od strane prijemnog<br />
procesa.<br />
Baferisani mod podrazumeva da se data komunikacija ne odvija direktno,<br />
već preko pomoćnog bafera. I u standardnom modu je moguće korišćenje<br />
baferisanja, ali sistem sam bira način na koji se poruka prosleđuje, kako mu<br />
najviše odgovara u datom momentu. U tom slučaju sistem sam vodi računa o<br />
svemu, pa i o alokaciji memorije potrebne za bafer. Za razliku od toga, u<br />
baferisanom modu, programer mora sam eksplicitno da odvoji memorijski<br />
prostor za bafer.<br />
Ako je poruka poslata u sinhronom modu, slanje poruke počinje tek u<br />
momentu kada su oba procesa (pošiljalac i primalac) spemna za komunikaciju.<br />
Ukoliko je samo jedan od njih spreman, on čeka na spremnost drugog procesa.<br />
Za razliku od prethodnih načina komunikacije, gde pošiljalac započinje<br />
komunikaciju, u komunikaciji po zahtevu, primalac prvi šalje zahtev za prijem