baconpancake1312 / ForestFireSim

0 stars 0 forks source link

Pitanje #2

Open baconpancake1312 opened 3 weeks ago

baconpancake1312 commented 3 weeks ago

Dobar dan @NikolaNemes , ja sam na dev branch pre mesec dana stavio što sam uradio ali sam zaboravio da Vas pitam da li je dobro. Da li je ovo što sam odradio dobro za 7? Ako nije, šta predlažete da dodam? Program je dovoljno samo pokrenuti, ispisaće rezultate sekvencijalne i paralelne implementacije u konzolu. Pri vrhu main-a su konstante tj. podešavanja koje imaju uticaj na performanse, u slučaju da Vam laguje. Primetio sam da paralelno rešenje (bar kakvo sam ja napravio) nema bolje performanse od sekvencijalnog kada je velik grid. Takođe, još ću doraditi readme.

NikolaNemes commented 3 weeks ago

Pozdrav,

Pokrenuo sam aplikaciju, GUI mi je trepnuo na momenat i sklonio se bez ikakvih jasnih errora. Probao sam smanjiti broj update-a po sekundi al se i dalje isto dogadjalo. Da li je ovo predvidjeno ponasanje?

Sto se tice rezultata paralelne implementacije, proverio sam Vasu implementaciju i imam par pitanja/sugestija:

Sekvencijalnu implementaciju mozete smatrati dobro uradjenom (sa izuzetkom tog cestog kreiranja matrica sto bi trealo proveriti).

Za GUI deo aplikacije Vam ne mogu reci posto mozda nisam dobro pokretao.

Sto se tice paralelne implementacije, trebao bi da se proba i nizi stepen paralelizacije (fiksna podela, na 2 ili 4 procesa).

baconpancake1312 commented 3 weeks ago

GUI mi je trepnuo na momenat i sklonio se bez ikakvih jasnih errora

Meni se isto dogodi kada stavim grid size > 500, predlozio bih Vam da smanjite i grid size. Mozda da zavisi od procesora. Kada se stavi veci grid size, paralelna implementacija postaje gora, takodje i cell size ima uticaj na performanse. Evo slike simulacije:

image

Ispis u konzoli nakon zavrsetka programa:

Flamegraph

![flamegraph](https://github.com/baconpancake1312/ForestFireSim/assets/102585150/84c575e7-d479-4d52-b471-98f375b870f3)

NikolaNemes commented 3 weeks ago

Jasno, isprobacu onda kasnije kako predlazete. Ako Vama radi na Vasem racunaru i to mi je svakako OK. Samo sam hteo da proverim dal dobro tumacim sve.

Za manji grid size tesko da ce paralelna implementacija biti bolja od serijske.

Tako da mi je okej da na manjem grid size-u da demonstriramo GUI, a na vecem grid size-u paralelizaciju.

baconpancake1312 commented 3 weeks ago

Napravio sam paralelnu implementaciju sa podelom grida na 2 i 4 dela, bolje je ali ne znam koja je od te dve bolja jer zavisi od velicine grida i broja update-a. Nista mi nije jasno..

NikolaNemes commented 3 weeks ago

Probajte onda eksperimentalno da utvrdite kada je koje bolje.

U principu trebala bi da postoji neka granica, neka velicina grida kada je bolja podela na 4 dela nego na 2 dela.

Neki ocekivani zakljucak bi bio.

Velicina grida 0 -> X: Najbolje raditi serijski, previse je skupo raditi paralelizaciju Velicina grida X -> Y: Najbolje raditi sa podelom na 2 dela matricu Velicina grida Y -> : Najbolje raditi sa podelom na 4 dela matricu

baconpancake1312 commented 2 weeks ago

Pozdrav,

Ekperimentisao sam i rezultati su interesantni, ima razlika kada se radi sa drugim velicinama celija. Predpostavljam da je zbog prikaza.

Za cell size 2.5 Velicina grida 0 -> 100 | >400: Najbolje raditi serijski Velicina grida 200 ->300 : Najbolje raditi sa podelom na 2 dela matricu Nije optimalno raditi sa podelom na 4 dela matricu

Za cell size 1.0 Velicina grida 0 -> 100 | >400: Najbolje raditi serijski Nije optimalno raditi sa podelom na 2 dela matricu Velicina grida 200 -> 300: Najbolje raditi sa podelom na 4 dela matricu

Rezultati eksperimenta cell size 2.5

universal: SPEED: u64 = 30; DENSITY: f64 = 0.7; MAX_UPDATE_COUNT: i32 = 100; CELL_SIZE: f64 = 2.5; grid=100 seri: 3.305s ✅ half: 3.32s quad: 3.31s grid:200 seri: 3.31s half: 3.29s ✅ quad: 3.3s grid:300 seri: 3.3665s half: 3.3547s ✅ quad: 3.4201s grid:400 seri: 9.0s ✅ half: 9.5081s quad: 9.5394s

Rezultati eksperimenta cell size 1.0

universal: SPEED: u64 = 30; DENSITY: f64 = 0.7; MAX_UPDATE_COUNT: i32 = 100; CELL_SIZE: f64 = 1.0; grid=100 seri: 3.303s ✅ half: 3.318s quad: 3.316s grid:200 seri: 3.3151s half: 3.2935s quad: 3.2912s ✅ grid:300 seri: 3.45s half: 3.4013s quad: 3.3695s ✅ grid:400 seri: 8.5358‬s ✅ half: 9.2148s quad: 9.1434s