08.03.2015 Views

Ceo rad - PDF (1.3 MB)

Ceo rad - PDF (1.3 MB)

Ceo rad - PDF (1.3 MB)

SHOW MORE
SHOW LESS

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 173<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

MPI_Finalize(void) je poslednja MPI funkcija u programu, i posle nje nije<br />

moguće korišćenje MPI funkcija, čak ni MPI_Init(). Korisnik mora da bude<br />

siguran da su sve komunikacije gotove pre nego što se pozove MPI_Finalize().<br />

MPI_Initialized(flag) određuje da li je MPI_Init() već ranije pozvana, ili ne, što<br />

se vidi iz vrednosti parametra flag.<br />

MPI_Abort(comm, errorcode) prekida sve procese u grupi komunikatora<br />

comm, a MPI_Comm_free(comm) markira komunikator comm za oslobađanje<br />

(dealokaciju). Posle oslobađanja pokazivaču se dodeljuje vrednost<br />

MPI_COMM_NULL, a fizički se oslobađa tak kada nema aktivnih referenci na<br />

njega. Primenjuje se i na lokalne i na globalne komunikatore.<br />

MPI_Comm_size(comm, size) parametrom size vraća broj procesa u<br />

komunikatoru comm.<br />

MPI_Comm_rank(comm, rank) parametrom rank vraća indeks (rang)<br />

tekućeg procesa u komunikatoru comm.<br />

MPI_COMM_WORLD predstavlja početni komunikator obezbeđen od samog<br />

MPI sistema koji sadrži sve procese, i dozvoljava proizvoljnu komunikaciju<br />

između njih. Broj procesa tokom <strong>rad</strong>a MPI programa ostaje konstantan, i<br />

unapred je zadat konfiguracionom datotekom.<br />

D.2.2 Korisnički tipovi podataka za komunikaciju<br />

Za međuprocesorsku komunikaciju se osim osnovnih tipova podataka, mogu<br />

se koristiti i tipovi koje je definisao korisnik.<br />

Posle definisanja, a pre samog korišćenja novog korisničkog tipa potrebno<br />

ga je ozvaničiti (committed), funkcijom MPI_Type_commit(datatype). Posle toga<br />

je spreman za upotrebu u komunikaciji. I pre kao i posle ozvaničavanja novog<br />

tipa moguće ga je koristiti pri pravljenju novih tipova. Osnovne tipove nije<br />

potrebno ozvaničavati.<br />

MPI_Type_free(datatype) oslobađa objekat datatype i dodeljuje mu vrednost<br />

MPI_DATATYPE_NULL. Svaka komunikacija koja koristi dati tip će biti<br />

normalno završena. Izvedeni tipovi datog tipa će ostati sačuvani.<br />

Neke od osnovnih informacija o korisničkim tipovima su adresa početka<br />

odnosno kraja objekta datog tipa (bottom), njegova dužina (size) i struktura<br />

podataka unutar njega (extent). Prva se može dobiti preko MPI_BOTTOM,<br />

MPI_Type_lb(datatype, lbound) ili MPI_Type_ub(datatype, ubound). Veličina<br />

datog objekta izražena u bajtovima može se dobiti preko funkcije<br />

MPI_Type_size(datatype, size), a struktura podataka unutar korisničkog tipa<br />

pomoću MPI_Type_extent(datatype, extent). Pomoću funkcije<br />

MPI_Address(location, address) se može na osnovu lokacije u memoriji naći<br />

odgovarajuća MPI adresa.<br />

Funkcija MPI_Type_contiguous(count, old_type, new_type) pravi novi tip<br />

new_type kopiranjem i spajanjem count tipova old_type. Dužina svake kopije je<br />

određena sa strukturom podataka unutar starog tipa (extent).<br />

MPI_Type_vector(count, blocklen, stride, old_type, new_type) pravi novi tip<br />

spajanjem count*blocklen delova tipa old_type, sa razmakom stride elemenata<br />

između glavnih delova. MPI_Type_hvector() <strong>rad</strong>i isto samo je razmak stride u<br />

bajtovima.<br />

MPI_Type_struct(count, blocklens, inds, old_types, new_type) pravi<br />

složeniju strukturu od count postojećih tipova. Broj kopija svakog od tipova u

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!