Test konvergence na anizotropii 3
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.