Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject bench2.sadの計算で微妙に異なる結果が?
Date: 2008/02/13(Wed) 10:36:47
ContributorKAMADA Susumu

自宅のPowerMacG5でコンパイルしたSADで、bench2.sadの計算から、微妙に異なる結果が出ます。
以下に示しますが、特に目立つのは、Emittance関数の計算結果とダイナミックアパーチャサーベイのスコアです。
コンパイル時に使用したsad.confを示すので、エキスパートのご指摘をお願いします。

ちなみに、gcc-4.2.3とgcc-4.2.2との間で、計算結果に違いは生じません。
また、曜日がずれるのは自宅でもofficeでも同様です。

------------bench2.sadの計算結果----------------
[SusumuStudyG5]
*** Welcome to SAD Ver.1.0.10.2.2b2 built at 2008-02-02 21:17:39 +0900 ***
*** Today: 00:09:31 Friday 02/13/2008 ***
cpu time= 3.2171E-02(sec) dt= 32.171(msec) free area:: 1796
OFF LOG ECHO;READ 77 ; 23
cpu time= 3.2996E-02(sec) dt= 32.996(msec) free area:: 1796
cpu time= 3.3295E-02(sec) dt= 33.295(msec) free area:: 1795
*** SADScript Initialization: /usr/local/SAD/share/Packages/init.n ***
RFSW RADCOD RAD FLUC INTRA POL COD DAPER EMIOU CMPLO FOURI SMEAR
F F F T F F T F F F F T
Design orbit length = 76.1809243968600
NPARA=1;
EMFLG='M';
FLENG='ON';
FSUPP='OFF';
FINIT='OFF';
cell cal
Matched. ( 0.000 ) DP = 0.02000 DP0 = 0.00000 ExponentOfResidual = 2.0 OffMomentumWeight = 1.000
$$$ f AX ####### # -3.64E-16 $$$ f BX ####### # 6.981218 $$$ f NX ####### # 1.250000
$$$ f AY ####### # -4.66E-15 $$$ f BY ####### # 27.858289 $$$ f NY ####### # 1.250000
$$$ f LENG ####### # 76.180924
vquad=Element['VALUE','Q*'];nquad=Element['NAME','Q*'];
! setquad[name_,val_]:=Module[{},Element['VALUE',name]=val];
! MapThread[Element['VALUE',#1 ]=#2 &,{nquad,vquad}]
! Do[Element['VALUE',nquad[ii]]=vquad[ii],{ii,Length[nquad]}]
fit SD1.2 nx .25 ny .25
fit SF1.2 SF1.4 nx 0.5 ny 0.5
fit B.2 ex .183
fit ex -0.065
fit leng 76.1809 nx 1.25 ny 1.25
fit qf1.2 qf3.2 bx 10
fit qf1.2 qf2.2 bx 10
fit qd1 qd2.2 by 10
fit qd1 qd3.2 by 10
b 2*Pi/112 b l .86
l7 .52
free q* l0 l1 l2 l3 l4 l5 l6 fix qe2
CONVERGENCE=1e-28;
IF EMFLG=='H'
fix * free qe2 qd2 qd3 qf2 qf3
fit rej leng nx ny;fit sd1.2 rej * ;fit qf1.2 qf2.2 rej bx;fit qf1.2 qf3.2 rej bx;
fit qd1 qd2.2 rej by fit qd1 qd3.2 rej by;fit qd1 qd2.2 by 10;
fit ex -.30 fit b.2 ex 0.35
ENDIF
IF EMFLG=='L'
fix * free qe2 qd2 qd3 qf2 qf3
fit rej leng nx ny;fit sd1.2 rej * ;fit qf1.2 qf2.2 rej bx;fit qf1.2 qf3.2 rej bx;
fit qd1 qd2.2 rej by fit qd1 qd3.2 rej by;fit qd2.2 qd3.2 by 10;
fit ex 0.11 fit b.2 ex 0.05
ENDIF
! go
org nmark 0 0 0 360/112*2 0 0 ;
calc;
Residual = 6.5569E-12 DP = 0.02000 DP0 = 0.00000 ExponentOfResidual = 2.0 OffMomentumWeight = 1.000
QD1.1/QD2.2 BY 27.85829 1 27.858289 QD1.1/QD3.f BY 27.85829 1 27.858289 QF1.2/QF2.2 BX 26.11497 1 26.114975
QF1.2/QF3.2 BX 26.11497 1 26.114975 SD1.2 NX .25 1 .250000 SD1.2 NY .25 1 .250000
SF1.2/SF1.4 NX .5 1 .500000 SF1.2/SF1.4 NY .5 1 .500000 B.2 EX .183 1 .183000
$$$ AX ####### # 4.088E-16 $$$ BX ####### # 6.981218 $$$ NX 1.25 1 1.250000
$$$ AY ####### # -2.11E-15 $$$ BY ####### # 27.858289 $$$ NY 1.25 1 1.250000
$$$ EX -.065 1 -.065000 $$$ LENG 76.1809 1 76.180924
xxx=LINE['GEO','***'][1,1]/2/Tan[Pi*2/112*2]-LINE['GEO','QF3.2'][1,2];
yyy=LINE['GEO','***'][1,1]/2/Sin[Pi*2/112*2];
delr=(xxx+yyy)/2-yyy
Out[33]:= .233299216738089
Clear[xxx];Clear[yyy];
stop
tfree: detect null pointer
tfree: detect null pointer
FFS end: CPU time = 0.011 sec
RFSW RADCOD RAD FLUC INTRA POL COD DAPER EMIOU CMPLO FOURI SMEAR
F F F T F F T F F F F T
Design orbit length = 3016.30334011535
CONVERGENCE=1e-25;
fit rfmark2 bx @ by @ ax 0 ay 0
fit rfmark2.2 bx @ by @ ax 0 ay 0
fit sfeo.2 rfmark2.2 bxm 80 bym 80
fit nx nx0 ny ny0 free qr* qv*
! go
sdsq:=Apply[Plus,Element["K2","SD*"]^2];
coda="DP=0.024 fitp 24 go DP=0.02 fitp 20 go DP=0.016 fitp 16 go DP=0.02 fitp 20 go";
cell
MatchingAmplitude:={{-0.026,xa,xa/3},{0.026,xa,xa/3},{0.022,xa*1.2,0},{-0.022,xa*1.2,0},{-0.024,-xa*1.1,0},{0.024,-xa*1.1,0}};xa=8;
fix * rej total;
! fit rfmark2 bx @ 20 by @ 20 ax 0 20 ay 0 20
fit rfmark2.2 bx @ 20 by @ 20 ax 0 20 ay 0 20
fit nx nx0 20 ny ny0 20 ax 0 20 ay 0 20 bx .33 20 by by0 20
free s{fdc}*; nodifcod
Out[68]:= nodifcod
ExponentOfResidual=0.5;
DP=0.02
Out[69]:= .02
gym="p=12;rep 4 DP=p*0.001 fitp p go p=p+4 until; DP=0.02 fitp 20 go"
Out[70]:= "p=12;rep 4 DP=p*0.001 fitp p go p=p+4 until; DP=0.02 fitp 20 go"
sf* min 0 sf* max 2.5 sd* max 0 sd* min -6


!!!! Function Test !!!!!


FunctionTest=Class[{},{},{t0,a,b,c,d,e,f,g,C,a1,x,a2,b2,x2,
ndim=400},

Constructor[]:=(
C=Literal[Class][{},{},{aa},];
);

Fact[xx_]:=If[xx<=1,1,xx*Fact[xx-1]];

Fun[xx_,z__,xx_]:=xx+z;

Test[]:=(
t0=TimeUsed[];
SeedRandom[35];
Print[Timing[Do[c=C[];c@aa=1,{ndim}];"Instance"]];
a1=a=Table[Random[],{ndim},{ndim}];
b=Table[Join[Random[200],Table["b",{200}]],{ndim}];
Print[Timing[Do[D[Sin[x2]*x2^3,x2],{800}];"D"]];
Print[Timing[Do[
Fit[a[[,{1,2}]],a2*x2+b2,x2,{a2,0},{b2,0}],{300}];"Fit"]];
Print[Timing[Do[Sort[Flatten[a]],{2}];"Sort"]];
Print[Timing[Do[Plot[{Sin[x2],Cos[x2]},{x2,-Pi,Pi},
DisplayFunction->Identity],{6}];"Plot"]];
Print[Timing[Do[ListPlot[a[[,{1,2}]],
DisplayFunction->Identity],{400}];"ListPlot"]];
Print[Timing[Do[Spline[a[[,{1,2}]]],{700}];"Spline"]];
Print[Timing[Do[Join[a,b],{2200}];"Join"]];
Print[Timing[Do[Append[a,b],{8000}];"Append"]];
Print[Timing[Do[ToExpression["a=1+Pi"],{60000}];"ToExpression"]];
Print[Timing[Do[ToString/@[a,{-1}],{1}];"ToString"]];
Print[Timing[Do[Fun[1,2,3,1],{40000}];"Fun"]];
Print[Timing[Do[b/.{x_String:>x//"c"},{2}];"Replace"]];
Print[Timing[Do[Do[b[[,i]],{i,ndim}],{10}];"ThreadPart"]];
Print[Timing[
Do[Do[a1[[i,j]]=a1[[j,i]],{i,ndim},{j,i}],{2}];"Part"]];
Print[Timing[Do[Fact/@[a,{-1}],{1}];"Map"]];
Print[Timing[Do[Thread[a],{30}];"Thread Real List"]];
Print[Timing[Do[Thread[b],{15}];"Thread Non-Real List"]];
Print[Timing[Do[Fact[200],{500}];"Fact"]];
Print[Timing[Do[Flatten[b],{16}];"Flatten"]];

Print[" \n******* Function Test CPU used = ",tf=TimeUsed[]-t0," sec\n"]);

];
ft=FunctionTest[];
ft@Test[];
{.291047006845474,"Instance"}
{.131411969661713,"D"}
{.173669040203094,"Fit"}
{.211347997188568,"Sort"}
{.306164026260376,"Plot"}
{.210632085800171,"ListPlot"}
{.18622899055481,"Spline"}
{.110681056976318,"Join"}
{.122328042984009,"Append"}
{.172363042831421,"ToExpression"}
{.327561855316162,"ToString"}
{.052083015441895,"Fun"}
{.367103099822998,"Replace"}
{.198317050933838,"ThreadPart"}
{.686894178390503,"Part"}
{.123852968215942,"Map"}
{.095773220062256,"Thread Real List"}
{.127829074859619,"Thread Non-Real List"}
{.510708332061768,"Fact"}
{.106534957885742,"Flatten"}

******* Function Test CPU used = 4.57513315975666 sec
ft=.;
MemoryCheck[1]
Out[72]:= {4695003,6553600,880,0}


!!!! Optics Calculation Test !!!!!!!

t0=TimeUsed[]
Out[73]:= 4.796256065368652
Do[FFS["CALC"],{15}];
Print[" \n******* Optics Calculation Test: CPU time used = ",toc=TimeUsed[]-t0," sec\n"];

******* Optics Calculation Test: CPU time used = 4.862303733825684 sec


!!! Tracking Test !!!!!!!
t0=TimeUsed[]
Out[89]:= 9.658725738525391
RFSW RADCOD
e=Emittance[SaveEMIT->True]
Out[92]:= {(Stable->0),(Tunes->{.473400441522577,-.080201969698293,.014705021871626}),(EnergyLossU0->841899.7213531686),
(RfVoltageVc->6669375.3984872019),(EquilibriumPosition->.011867380966062),(MomentumCompaction->-1.403804127233E-4),
(OrbitDilation->0),(BucketHeight->.036967246823032),(HarmonicNumber->5120.0673440583533),
(OrbitAtExit->{-1.438960475901E-8,1.4926806081698E-7,-1.149340649167E-9,-2.953604874793E-7,-1.628530284763E-5,
-6.051358483954E-7}),
(DampingRate->{-1.166678143986E-4,-6.868884666713E-5,-2.379273779416E-4}),
(Emittances->{1.9488174206712E-8,1.710775906227E-12,2.4066694093961E-6}),(MomentumSpread->7.4485803830364E-4),
(BunchLength->.003231044803423),(TuneShiftByRadiation->{-5.821719963095E-6,-1.550443095905E-5,6.8826826146108E-6})}

DynamicApertureSurvey[{{0,50},{0,50},Table[i,{i,-16,16,4}]},60,Output->6];
Maximum number of particles =63
Range Xmin: 0.000 Xmax: 50.000
(Ymin: 0.000 Ymax: 50.000)
Zmin: -16.000 Zmax: 16.000
Display: 100 turns/character
NZ 0----!----1----!----2----!----3----!----4----!----5
-16.00 19 ************000000000000000000000000000000000000000
-12.00 22 ***************000000000000000000000000000000000000
-8.00 27 ********************0000000000000000000000000000000
-4.00 30 ***********************0000000000000000000000000000
0.00 35 ****************************00000000000000000000000
4.00 28 *********************000000000000000000000000000000
8.00 24 *****************0000000000000000000000000000000000
12.00 23 ****************00000000000000000000000000000000000
16.00 18 ***********0000000000000000000000000000000000000000
NZ 0----!----1----!----2----!----3----!----4----!----5
Score: 226
Print[" \n******* Tracking Test CPU used = ",tt=TimeUsed[]-t0," sec\n"];

******* Tracking Test CPU used = 6.275852203369141 sec


!!!! Matching Test !!!!!!!

t0=TimeUsed[]
Out[93]:= 15.934756278991699
CONVERGENCE=2e-4;
dp0=0.020;
dp=dp0;
FFS["fitp dp/0.001;go",6];
4 234 2.2671E-03 (NEWTON) 6.927
7 50 2.1257E-03 (NEWTON) 5.613
10 18 2.0078E-03 (NEWTON) 1.127
Matched. ( 1.9590E-03) DP = 0.02000 DP0 = 0.00000 ExponentOfResidual = 0.5 OffMomentumWeight = 1.000
DP -.020 -.018 -.016 -.014 -.012 -.010 -.008 -.006 .000 .006 .008 .010 .012 .014 .016 .018 .020
Res. .027 .027 .025 .024 .022 .020 .017 .015 .000 .017 .020 .021 .022 .023 .024 .025 .029
RFMARK2.1 AX ##### # -.115 -.119 -.122 -.122 -.118 -.108 -.093 -.073 1.E-7 .061 .081 .102 .128 .158 .192 .231 .275
RFMARK2.1 BX ##### # 3.434 3.542 3.647 3.744 3.835 3.918 3.997 4.078 4.362 4.659 4.736 4.803 4.865 4.932 5.012 5.116 5.256
RFMARK2.1 AY ##### # -.108 -.064 -.034 -.013 -3E-4 .007 .010 .010 -2E-7 -.003 .002 .011 .024 .042 .066 .097 .134
RFMARK2.1 BY ##### # 27.15 26.74 26.29 25.86 25.51 25.26 25.10 25.02 25.10 24.96 24.71 24.33 23.82 23.17 22.42 21.60 20.75
RFMARK2.2 AX 0 20 -.062 -.042 -.023 -.007 .005 .011 .013 .010 -3E-7 .008 .008 .006 6.E-4 -.006 -.012 -.015 -.013
RFMARK2.2 BX 4.362 20 4.212 4.215 4.232 4.262 4.300 4.339 4.371 4.389 4.362 4.360 4.377 4.391 4.393 4.375 4.333 4.266 4.175
RFMARK2.2 AY 0 20 -.091 -.106 -.114 -.115 -.110 -.100 -.085 -.066 2.E-8 .047 .052 .052 .047 .036 .022 .006 -.009
RFMARK2.2 BY 25.103 20 24.04 23.74 23.65 23.67 23.75 23.86 24.02 24.22 25.10 26.16 26.41 26.52 26.47 26.22 25.75 25.06 24.14
$$$ fAX 0 20 -.029 -.031 -.032 -.031 -.027 -.021 -.014 -.007 3.E-7 -.013 -.016 -.020 -.024 -.028 -.034 -.040 -.048
$$$ fBX .33 20 .340 .335 .331 .326 .323 .321 .321 .322 .330 .334 .336 .338 .341 .347 .354 .362 .372
$$$ fNX 46.52 20 46.53 46.53 46.53 46.52 46.52 46.52 46.52 46.52 46.52 46.52 46.52 46.52 46.53 46.53 46.54 46.54 46.54
$$$ fAY 0 20 .042 .038 .033 .025 .017 .008 .001 -.003 -3E-8 .028 .040 .052 .062 .068 .071 .067 .056
$$$ fBY .008 20 .008 .008 .008 .008 .008 .008 .008 .008 .008 .008 .009 .009 .009 .009 .009 .009 .009
$$$ fNY 46.08 20 46.10 46.09 46.09 46.09 46.08 46.08 46.08 46.08 46.08 46.08 46.08 46.08 46.08 46.08 46.07 46.07 46.07
$$$ fLENG ##### # 3016.3033
Print[" \n******* Matching Test: CPU time used = ",tm=TimeUsed[]-t0," sec\n"];

******* Matching Test: CPU time used = 4.345625877380371 sec

Print["\n *********** summary of the bench mark \n",
"\tFunction Test \t",tf,"\n\tOptics Test\t",toc,
"\n\tTracking Test\t",tt, "\n\tMatching Test\t",tm,
"\n\tOverall Score (smaller is faster): ",tf/42+(toc+tt+tm)/96];

*********** summary of the bench mark
Function Test 4.57513315975666
Optics Test4.862303733825684
Tracking Test6.275852203369141
Matching Test4.345625877380371
Overall Score (smaller is faster): .270221135800793
Abort

------------以下は、sad.conf--------------
# New Makefile -- Local Configuration Part Sample
#

## Compiler setting examples

# -- Interl C/Fortran Compiler 8.1 or later --
#COMPILER=Intel
##SYS_FOPT+=-vms -ccdefault list

# -- Interl C/Fortran Compiler 7.1 --
#COMPILER=Intel
#USE_IFC=7.1

# -- GNU Compiler Collection 4.2 or later --
COMPILER=GNU
CC=gcc-4.2.3
FC=gfortran-4.2.3
HAVE_F_LNBLNK=NO
SYS_DEPOBJ+=sim/unix_fortran_.o sim/fseek_Dummy_.o
FOPT=-O2
COPT=-O2

# -- Debugging source tree --
#FOPT=-g -O1
#COPT=-g -O1

# -- Debugging memory allocator --
#COPT+=-DDEBUG_MEMORY

# -- Debugging memory usege --
#COPT+=-DUSE_ELECTRICFENCE -DUSE_ELECTRICFENCE_FREECHECK
#EXE_LIBS+=-L/usr/local/lib -lefence

## SAD root directory
SAD_ROOT=/usr/local/SAD3

## Contrib source archive directory
#SOURCE_ARCHIVE_DIR=/usr/ports/distfiles

## X11 setup
#
USE_X11=YES
#X11_PREFIX=/usr/X11R6
##X11_INCDIR=$(X11_PREFIX)/include
##X11_LIBDIR=$(X11_PREFIX)/lib
##X11_LIBS=-lX11

## Tcl/Tk setup
#
USE_TCLTK=YES
TCLTK_VERSION=8.4.17
##BUILD_TCLTK=YES
##USE_TCLTK_SHARED_LIBRARY=YES
##TCLTK_GUI_BACKEND=X11|AQUA
##TCLTK_FONT_SYSTEM=Xlib|Xft
##TCLTK_VERSION=8.4.16|8.5b1|cvs
##TCLTK_PREFIX=$(SAD_ARCH_DIR)
##TCLTK_INCDIR=$(TCLTK_PREFIX)/include
##TCLTK_LIBDIR=$(TCLTK_PREFIX)/lib
##TCLTK_LIBS=-ltk$(TCLTK_FEATURE_VERSION) -ltcl$(TCLTK_FEATURE_VERSION)

## Python setup
#
#USE_PYTHON=YES
##BUILD_PYTHON=YES
##USE_PYTHON_THREAD=YES
##PYTHON_VERSION=2.4
##PYTHON_PATCH_LEVEL=1
##PYTHON_PREFIX=$(SAD_ARCH_DIR)
##PYTHON_INCDIR=$(PYTHON_PREFIX)/include/python$(PYTHON_VERSION)
##PYTHON_LIBDIR=$(PYTHON_PREFIX)/lib
##PYTHON_LIBS=-lpython$(PYTHON_VERSION)
##PYTHON_PATH=$(PYTHON_PREFIX)/lib/python$(PYTHON_VERSION)

## EPICS setup
#
#USE_EPICS=YES
#EPICS_INCDIR=$(EPICS_PREFIX)/include
#EPICS_LIBDIR=$(EPICS_PREFIX)/lib
#EPICS_LIBS=-lca -lDb -lCom

## for KEK-B EPICS setup
#USE_KEKB_EPICS=YES

# --- don't touch ---
ifeq ($(USE_KEKB_EPICS),YES)
KEKB_EPICS_ARCH=Unknown

ifeq ($(OS_NAME),Linux)
ifeq ($(CPU_ARCH),i386)
KEKB_EPICS_ARCH=Linux
endif
endif

ifeq ($(OS_NAME),OSF1)
ifeq ($(CPU_ARCH),Alpha)
KEKB_EPICS_ARCH=alpha
endif
endif

ifeq ($(OS_NAME),Darwin)
ifeq ($(CPU_ARCH),i386)
KEKB_EPICS_ARCH=darwin-x86
EPICS_PREFIX=/proj/epics/R314/R3149/base
EPICS_LIBS=-lca -ldbStaticHost -lCom
COPT+=-I$(EPICS_PREFIX)/include/os/Darwin
endif
ifeq ($(CPU_ARCH),PowerPC)
KEKB_EPICS_ARCH=darwin-ppc
EPICS_PREFIX=/proj/epics/R314/R3149/base
EPICS_LIBS=-lca -ldbStaticHost -lCom
COPT+=-I$(EPICS_PREFIX)/include/os/Darwin
endif
endif

ifeq ($(OS_NAME),HP-UX)
ifeq ($(CPU_ARCH),PA1.0)
KEKB_EPICS_ARCH=hp700
endif

ifeq ($(CPU_ARCH),PA2.0)
KEKB_EPICS_ARCH=hppa8k
endif
endif

ifeq ($(KEKB_EPICS_ARCH),Unknown)
$(error Unknown architecture)
else
USE_EPICS=YES
EPICS_PREFIX?=/proj/epics/R313/base
EPICS_LIBDIR=$(EPICS_PREFIX)/lib/$(KEKB_EPICS_ARCH)
endif
endif # USE_KEKB_EPICS==YES

# End of File


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)