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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

172 Paralelizacija GA za rešavanje nekih NP-kompletnih problema<br />

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

podataka, a zatim čeka pošiljaoca da mu ih pošalje. Pošiljalac izvršava datu<br />

naredbu slanja podataka samo ako je prethodno primio odgovarajući zahtev.<br />

Ako je komunikacija blokirajuća, pri slanju odgovarajući proces nastavlja sa<br />

<strong>rad</strong>om tek po završetku cele operacije, kada su odgovarajući podaci poslati, pa<br />

je moguće ponovo koristi njihove memorijske lokacije. Slično tome, pri prijemu<br />

poruke, dati proces nastavlja sa <strong>rad</strong>om tek pošto je primio celu poruku.<br />

Neblokirajući način inicira komunikaciju, a odgovarajući proces odmah zatim<br />

nastavlja sa daljim <strong>rad</strong>om, uporedo sa slanjem ili prijemom date poruke. Pri<br />

tome je postavljen poseban objekat, na osnovu koga je moguće kontrolisati tok i<br />

završetak tekuće komunikacije. Ovaj način može u nekim slučajevima biti<br />

pogodan, iako zahteva veću kontrolu od strane programera.<br />

D.1.5 Kolektivne komunikacije<br />

Kolektivne komunikacije obezbeđuju fleksibilan način za razmenu podataka<br />

između procesora koji pripadaju istoj grupi. Za razliku od pojedinačnih<br />

komunikacija poruke u kolektivnim komunikacijama nemaju tag i mogu se<br />

koristiti samo lokalni komunikatori, pošto to jedino ima smisla. Odgovarajuća<br />

operacija za kolektivnu komunikaciju mora biti pozvana od svih procesa u datoj<br />

grupi, tako da se argumenti odgovarajuće funkcije moraju slagati po tipu i<br />

vrednosti.<br />

Sve operacije za kolektivnu komunikaciju su realizovane isključivo kao<br />

blokirajuće. Svaki proces po završetku svog udela u celoj komunikaciji može da<br />

nastavi dalje sa <strong>rad</strong>om. U nekim MPI implementacijama su funkcije za<br />

kolektivne komunikacije realizovane korišćenjem funkcija za pojedinačnu<br />

komunikaciju, ali se takav pristup izbegava u novijim MPI implementacijama,<br />

koje teže vrhunskim performansama.<br />

D.1.6 Globalno izračunavanje<br />

MPI osim lokalnog izračunavanja na datom procesoru (procesu) omogućuje i<br />

globalno izračunavanje neke operacije na svim procesima u datoj grupi. Pored<br />

nekih osnovnih operacija obezbeđenih od sistema, moguće je i zadavanje<br />

operacija koje definiše sam korisnik. Globalne operacije se mogu izvršavati<br />

kako na pojedinačnim, tako i na vektorskim podacima. Iako se globalno<br />

izračunavanje može emulirati lokalnim izračunavanjima na datim procesima uz<br />

potrebnu međuprocesorsku komunikaciju, ovakav pristup ima vrlo kratak zapis<br />

uz maksimalno očuvanje efikasnosti izvršavanja.<br />

D.2 MPI konstrukcije korišćene u implementiranju PGANP<br />

Najveća pažnje će biti poklonjena delovima koji su potrebni za paralelnu GA<br />

implementaciju, koju je autor razvio koristeći MPI standard. Ove konstrukcije će<br />

biti nešto detaljnije opisane, a pregled ostalih se može videti u narednom<br />

odeljku. Zbog kraćeg zapisa, u prikazu funkcija će biti dati samo odgovarajući<br />

argumenti, dok se tipovi svih argumenata MPI funkcija mogu naći na kraju ovog<br />

dodatka.<br />

D.2.1 Inicijalizacija<br />

Inicijalizacija u MPI standardu se vrši funkcijom MPI_Init(argc, argv). Ona se<br />

mora pozvati pre korišćenja bilo koje druge MPI funkcije, i to najviše jednom.<br />

Verzija za ANSI C prihvata &argc i &argv koje su dobijene od main() funkcije.

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

Saved successfully!

Ooh no, something went wrong!