Subject | : bench2.sadの計算で微妙に異なる結果が? |
Article No | : 531 |
Date | : 2008/02/13(Wed) 10:36:47 |
Contributor | : KAMADA 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
|