Test konvergence na anizotropii
3

Obsah

V minulem testu jsme poprve vyzkouseli konvergenci metody na kruhu a zjistili aspon orientacne vlastnosti narrow bandu na kruznici. Doladily se nejake finticky, a tak jsme pomalu presli k dalsimu testu - anizotropie. Proti predchozi anizotropii na 3-uhelnicku jsme tentokrat jeste zvetsili oblast a dali jen 4-uhelnicek, "qfold." Pro vsechny nasledujici pokusy jsme uvazovali nasledujici podminky:

Stred = [ 4.0, 4.0 ]
Polomer = 3.00

Velikost oblasti pri mrizce procesu = [ 0.0 - 8.0, 0.0 - 8.0 ]
Pocatecni cas = 0.0
Koncovy cas = 3.5

Anizotropie:
Zeta = 0.05
N_Fold = 4
Force = 0.0
Alpha = 1.0

Protoze v tomto pripade jiz neznam analyticke exaktni reseni, tak jako chybu zde oznacujeme hausdorfovu vzdalenost od nejjemnejsiho reseni. LPnormu uz nepocitame, protoze se to nehodi z duvodu mista (quota). :-((

Sada 1
<4aniz1>
Prostorovy krok
0.030
0.025
0.020
0.015
0.010
0.008
Casovy krok
7e-5
4.9e-5
3.1e-5
1.8e-5
7.8e-6
5e-6
Velikost mrizky (bodu/strana)
267
320
400
534
800
1000
Chyba
6.3e-4
4.8e-4
2.8e-4
1.4e-4
4.4e-5
X
Doba vypoctu (s)
892
1834
4429
13752
69291
167742

Vypocty byly vsechny provedeny na novem clusteru IBM. Pro odhady rychlosti se hodi vykon cca. 247e-9 vterin na iteraci a bod (rozptyl je velice maly). Odhad radu konvergence byl opet napocitan jako EoC = (log(E1)-log(E2)) / (log(F1)-log(F2)), E chyby, F stupne volnosi jako iteraci*pocetbodu.

EoC
Krok
0.030
0.025
0.020
0.015
0.010
0.008
Stupnu volnosti (log)
9.552
9.864
10.257
10.744
11.458
11.845
EoC
0.378
0.618

EoC

0.596
0.704


Opet hezke... :-) Vypada to, ze uz jsem se naucil nastavit vsechno poradne a dava to i rozumne vysledky. V predchozim testu nasleduje porovnani rychlosti vypoctu pri zvetsujici se velikosti pasu. Opet provedeno, velice podobne vysledky jako v predchozim pripade <4aniz2>. Umyslne nepisu uplne stejne, protoze jeden vysledek je trochu jiny nez jsem ocekaval, a proto jsem to cele prepocital na IBM SP, abych eliminoval vliv zatizenenho kompu. Takze delsi test na IBM SP:

<4aniz5>
Sirka pasu
20
25
30
35
40
45
50
60
70
80
Doba vypoctu
2144
2489
2990
3579
4153
4943
5571
7328
8889
10738
Hausdorf
1.5e-1
1.1e-1
8.1e-2
5.2e-2
2.8e-2
9.9e-3
2.9e-3
4.9e-3
1.9e-3
9.6e-4

Coz nam potvrzuje, ze ten jeden nesedici vysledek byl asi ulet. Krok je 0.02. Dalsi test je vliv snizene synchronizace - postupne synchronizujeme min a min.

<4aniz6>
Reinit. kazdych N kroku
1
3
6
9
12
15
18
21
24
27
Doba vypoctu
6159
6452
6509
6513
6591
6532
X
X
X
X
Hausdorf
3.0e-4
8.9e-1
2.9e-1
1.0e+0
8.9e-1
8.9e-1
X
X
X
X

Popis: Kazdych N kroku kontrola reinicializace a zaroven synchronizace. Posila se cca. 1/2*N rad (zaokrouhleno nahoru).

Sirka pasu byla 50 (resp. 2x26) za zprisnenych reinicializacnich podminek, abysme se dostali na rozumejsi hodnotu chyby (proto je chyba podstatne lepsi nez pri predhozi simulaci pro prvni pripad). "X" znaci, ze vysledek je sice k dispozici, ale radsi jsem ho ani nepocital... Velice prekvapive lze poznamenat, ze vypocet se neurychluje a vysledek se velice horsi. Vysvetleni? :-( Netusim... Aspon zrychlit se to melo. Jedine mozne vysvetleni - jeslit synchronizujeme kazdou N tou hladinu, tak se muze stat, ze zbytecne dlouho zustaneme na vetsim poctu bodu (protoze se qfold stahuje).

Provedl jsem par testu, proc se to nezrychluje: Pri vetsim "N" se provadi o hodne casteji reinicializace - tzn. to, co se nasetri mensim posilani pri synchronizaci se zase pokazi pri reinicializaci. Duvodem castejsi reiniciliazce jsou pravdepodobne rychleji rozjizdejici se "konce," ktere se rychleji dostanou do rizikoveho reinic. pasma. Zkusil jsem to ted napocitat: na uzkem pasu je to pomalejsi, na sirsim rychlejsi - coz podporuje myslenku.

Konecne mam dostatek casu udelat komplexnejsi test nastaveni uzkeho pasu - zvolil jsem zavislost na dvou vybranych parametrech, ktere jsou podle me nejdulezitejsi a nejvice ovlivnuji vysledek. Jsou to sirka a prisnost reinicializce (presneji, kam postavit detekcni miny pro reinicializaci). A protoze stale nejde poznat, co to tedy je, tak vysvetlim jak je to implementovane - prisnost znaci procentualni vzdalenost min od kraje. Tzn. ze 50% znamena, ze uz bude jen velice malo min na krajich. Nejdrive se podivame na chybu. Pro presnost podotykam, ze krok je 0.02, kde plna domena dosahuje chyby 2.8e-4 za 12432 vterin (simulace probehly na starem clusteru).

<4aniz7>
Prisnost \ Sirka pasu v bodech
20
30
40
50
60
70
10%
X
8,14e-3
1,41e-3
9,88e-4
5,59e-4
4,27e-4
20%
1,30e-1
7,66e-3
8,13e-3
1,05e-3
5,91e-4
2,35e-4
30%
1,24e-1
5,85e-2
3,21e-3
6,75e-3
1,91e-3
1,40e-3
40%
1,12e-1
8,38e-2
4,54e-2
1,43e-2
3,36e-3
2,82e-3
50%
1,10e-1
8,47e-2
5,70e-2
3,66e-2
2,53e-2
1,71e-2

Dale nas zajima doba vypoctu (cas / pocet reinicializaci):
<4aniz7>
Prisnost \ Sirka pasu v bodech
20
30
40
50
60
70
10%
X / 22637
4423 / 85
5598 / 42
7151 / 28
8802 / 21
10728 / 17
20%
2307 / 42 3436 / 42
4675 / 14
6328 / 10
7841 / 8
9718 / 7
30%
2093 / 22
3278 / 22
4564 / 8
6017 / 6
7896 / 5
9637 / 4
40%
2047 / 20
3120 / 16
4426 / 5
5860 / 4
7674 / 3
9652 / 3
50%
2058 / 19
3100 / 16
4393 / 3
5958 / 3
7812 / 3
9631 / 2

A souhrnne info - zvolil jsem trivialni podminku optimality jako doba*sqrt(chyba) a vysledky ukazuje nasledujici tabulka.
<4aniz7>
Prisnost \ Sirka pasu v bodech
20
30
40
50
60
70
10%
X
399.8
210.2
224.8
208.1
221.7
20%
831.8
300.7
421.5
205.1
190.6
149.0
30%
737.0
792.8
258.6
494.3
345.1
360.9
40%
685.0
903.2
943.1
700.8
444.8
512.6
50%
682.6
902.2
1048.8
1139.8
1242.6
1257.1

Zkusime jeste zvysit udel rychlosti - log( doba^2 * sqrt(chyba) ).
<4aniz7>
Prisnost \ Sirka pasu v bodech
20
30
40
50
60
70
10%
X
6.25
6.07
6.21
6.26
6.38
20%
6.28
6.01
6.29
6.11
6.17
6.16
30%
6.19
6.41
6.07
6.47
6.44
6.54
40%
6.15
6.45
6.62
6.61
6.53
6.69
50%
6.15
6.45
6.66
6.83
6.99
7.08

A nakonec jen napocitani ucinnosti paralelizace na plne domene na SP. Na kroku 0.03 a casovem 7e-5.
<4aniz8>
Pocet procesu
1
4
8
12
16
Doba vypoctu
5720
3481
1778
1207
903
LZV 1
-
243%
249%
253%
253%
LZV predchozimu
-
243%
102%
102%
100%

Ponekud zarazejici vysledek si vysvetluji tim, ze jsou to vsechno dualni masiny, kazde dva procesy tedy maji jen jeden komunikacni kanal. Dusledkem je, ze komunikace s ostatnimi procesy trva zhruba 2x tak dlouho, nez by melo - coz jsme presne pozorovali.

A na konec porovnani nekolika stroju na vypoctu toho sameho (jedna se o full band, 0.02):
<4aniz9>

Pocet procesoru (+MHz)
Doba vypoctu
Doba pri 1GHz*  Vykon Ghz
IBM SP2
16 x 120, Power2
12432
23869.44
1.92
IBM SP
16 x 200, Power3
4429
14172.80
3.20
KFE
8 x 2400, Pentium4
547
10502.40
19.20
KM




AMD XP 1800+
1 x 1533, AthlonXP
11121
17015.13
1.53
*) Jak dlouho by pocital pocitac o 1GHz linearne extrapolovany z vysledku. Resp. Doba*Vykon.