Hruba kontrola spravne funkcnosti a presnosti algoritmu
jiz byla provedena na kruznici, kde je znamo analyticke reseni. Tady se budeme
venovat paralelizaci. A tady uz se vali prvni kompletni sada testu, ktera
si klade za cil overit, zda je paralelizace provedena spravne. Jako testovaci
priklad jsem vzal stahujici se 'petiuhelnik' s nasledujicimi parametry:
Stred opsane kruznice = [ 2.0, 2.0 ]
Polomer = 1.35
Zeta = 0.034
M_fold = 5
Force = 0.0
Alpha = 1.0
Velikost oblasti pri mrizce procesu = [ 0.0 - 4.0, 0.0 - 4.0 ]
Prostorovy krok = 0.02
Pocatecni cas = 0.0
Casovy krok = 5e-5
Koncovy cas = 0.9
Epsilon^2 = 1e-10
Rozmery oblasti pri narrow bandu - 25 x 25 bodu
Vypocet jsme provedli za velice pocetnych reinicializaci (cca. 7), aby
se projevilo co nejvice chyb. Prvni obrazek ukazuje porovnani sekvencniho
kodu, mrizky (2 x 2 procesy) a narrow bandu (2 procesy) v case koncovem case
0.9000.
Koncovy cas 0.9, porovnani metod
|
|
Modra - sekvencni algoritmus, Zelena - mrizka procesu, Cervena - narrow
band. Odchylky mezi mrizkou procesu a sekvencnim algoritmem jsom relativne
male (vzhledem ke kroku 0.02) a dosahuji maxima v bode nejvetsi anizotropie.
Vysledky narrow band verze jsou pochopitelne zatizeny vetsi chybou, ale i
tento vysledek se mi jevi jako velice pozitivni.
V dalsi simulaci jsme se zamerili na zmenu vysledku pri pouziti vetsiho
poctu procesu - konkretne 2, 4 a 16 pri narrowbandu a 4, 8 a 16 pri mrizce.
Mrizka procesu
|
Narrow band
|
|
|
Na mrizce procesu by meli byt zmeny temer nemeritelne, coz se potvrdilo.
Jako finalni nevizualni kontrola spravnosti byla do programu vlozena rutina,
ktera prubezne a nahodne kontrolovala behem vypoctu, ze vsechny procesy pocitaji
na stejnych datech (v mistech prekryvu). Vsechno se zda byt v poradku.
Co se narrow bandu tyce, jsou drobne problemy pri vetsim poctu procesu,
protoze se zacinaji prekryvat i procesy, se kterymi program nepocita (je
implementovany prekryv jen dvo po sobe jdoucich procesu). Z tohoto duvodu
bylo provedeno provonani na drivejsi casove hladine 0.8550. Cervena - 2,
Zelena - 4, Modra - 16 procesu. Vysledky se mi jevi jako opet uspokojujici.
Nutno podotknout, ze simulace na 8 procesech zkolabovala na drivejsi casove
hladine a i 16 procesova verze skoncila chybou. Domnivam, ze je to zpusobeno
prave nekonzistenci na malych vzdalenostech, kdy mu neco jednoduse nesedne...
Chtelo by to nejaky mechnizmus, co by automaticky snizoval poce pouzitych
procesu behem vypoctu.