11 |
echo |
echo |
12 |
echo "where possible OPTIONS are:" |
echo "where possible OPTIONS are:" |
13 |
echo " (-help|-h) print usage" |
echo " (-help|-h) print usage" |
14 |
echo " (-mth) run multi threaded (using eedata.mth)" |
echo " (-mth) run multi-threaded (using eedata.mth)" |
15 |
echo " (-mpi) compile and run using MPI" |
echo " (-mpi) compile and run using MPI" |
16 |
echo " (-ieee|-noieee) if possible, use IEEE compiler flags" |
echo " (-ieee|-noieee) if possible, use IEEE compiler flags" |
17 |
echo " (DEF=\"-ieee\")" |
echo " (DEF=\"-ieee\")" |
30 |
echo " Bourne-compatible \"sh\" shell" |
echo " Bourne-compatible \"sh\" shell" |
31 |
echo " (DEF=\"\" for \"bash\")" |
echo " (DEF=\"\" for \"bash\")" |
32 |
echo " (-adm|-ad) perform an adjoint run" |
echo " (-adm|-ad) perform an adjoint run" |
33 |
|
echo " (-oad) perform an OpenAD adjoint run" |
34 |
echo " (-command) STRING command to run" |
echo " (-command) STRING command to run" |
35 |
echo " (DEF=\"make output.txt\")" |
echo " (DEF=\"make output.txt\")" |
36 |
echo " (-m|-make) STRING command to use for \"make\"" |
echo " (-m|-make) STRING command to use for \"make\"" |
212 |
eval "HAVE_PTR0"$ii"=t" |
eval "HAVE_PTR0"$ii"=t" |
213 |
else |
else |
214 |
eval "HAVE_PTR0"$ii"=f" |
eval "HAVE_PTR0"$ii"=f" |
215 |
if test "x$ADM" = x ; then |
if test "x$ADM" = x -a "x$OADM" = x; then |
216 |
# remove this ptr from the list of output variable to check |
# remove this ptr from the list of output variable to check |
217 |
# echo "-- ptr test=" $tst "number of var=" `echo $listVar | awk '{print NF}'` 1>&2 |
# echo "-- ptr test=" $tst "number of var=" `echo $listVar | awk '{print NF}'` 1>&2 |
218 |
listVar=`echo "$listVar" | sed "s/ pt$ii..//g"` |
listVar=`echo "$listVar" | sed "s/ pt$ii..//g"` |
273 |
'aSIav') testoutput_var $1 "seaice_area_mean" "SIce Area mean" $2 $3; yy=$? ;; |
'aSIav') testoutput_var $1 "seaice_area_mean" "SIce Area mean" $2 $3; yy=$? ;; |
274 |
'aSIsd') testoutput_var $1 "seaice_area_sd" "SIce Area StDv" $2 $3; yy=$? ;; |
'aSIsd') testoutput_var $1 "seaice_area_sd" "SIce Area StDv" $2 $3; yy=$? ;; |
275 |
'hSImn') testoutput_var $1 "seaice_heff_min" "SIce Heff min" $2 $3; yy=$? ;; |
'hSImn') testoutput_var $1 "seaice_heff_min" "SIce Heff min" $2 $3; yy=$? ;; |
276 |
'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Hell max" $2 $3; yy=$? ;; |
'hSImx') testoutput_var $1 "seaice_heff_max" "SIce Heff max" $2 $3; yy=$? ;; |
277 |
'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Hell mean" $2 $3; yy=$? ;; |
'hSIav') testoutput_var $1 "seaice_heff_mean" "SIce Heff mean" $2 $3; yy=$? ;; |
278 |
'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Hell StDv" $2 $3; yy=$? ;; |
'hSIsd') testoutput_var $1 "seaice_heff_sd" "SIce Heff StDv" $2 $3; yy=$? ;; |
279 |
'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;; |
'AthSiG') testoutput_var $1 "thSI_Ice_Area_G" "thSIc Area Global" $2 $3; yy=$? ;; |
280 |
'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South" $2 $3; yy=$? ;; |
'AthSiS') testoutput_var $1 "thSI_Ice_Area_S" "thSIc Area South" $2 $3; yy=$? ;; |
281 |
'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North" $2 $3; yy=$? ;; |
'AthSiN') testoutput_var $1 "thSI_Ice_Area_N" "thSIc Area North" $2 $3; yy=$? ;; |
315 |
( |
( |
316 |
cd $1; |
cd $1; |
317 |
command="$GENMAKE2 -ds -m $MAKE" |
command="$GENMAKE2 -ds -m $MAKE" |
318 |
if test "x$ADM" = x ; then |
if test "x$ADM" = xt ; then |
|
command="$command --mods=../code" |
|
|
else |
|
319 |
command="$command --mods=../code_ad" |
command="$command --mods=../code_ad" |
320 |
|
elif test "x$OADM" = xt ; then |
321 |
|
command="$command -adof ../../../tools/adjoint_options/adjoint_oad -mods '../code_oad ../../OpenAD/code_oad_all'" |
322 |
|
else |
323 |
|
command="$command -mods=../code" |
324 |
fi |
fi |
325 |
if test "x$OPTFILE" != xNONE ; then |
if test "x$OPTFILE" != xNONE ; then |
326 |
command="$command --optfile=$OPTFILE" |
command="$command -optfile=$OPTFILE" |
327 |
fi |
fi |
328 |
if test "x$IEEE" != x ; then |
if test "x$IEEE" != x ; then |
329 |
command="$command -ieee" |
command="$command -ieee" |
334 |
if test "x$MPI" = xt ; then |
if test "x$MPI" = xt ; then |
335 |
command="$command -mpi" |
command="$command -mpi" |
336 |
fi |
fi |
337 |
|
if test "x$MULTI_THREAD" = xt ; then |
338 |
|
#- run multi-threaded using OpenMP: |
339 |
|
command="$command -omp" |
340 |
|
fi |
341 |
if test "x$TS" = xt ; then |
if test "x$TS" = xt ; then |
342 |
command="$command -ts" |
command="$command -ts" |
343 |
fi |
fi |
349 |
fi |
fi |
350 |
fi |
fi |
351 |
printf 'genmake ... ' 1>&2 |
printf 'genmake ... ' 1>&2 |
352 |
$command > make.log 2>&1 |
# $command > make.log 2>&1 |
353 |
|
eval $command > make.log 2>&1 |
354 |
RETVAL=$? |
RETVAL=$? |
355 |
# Reduce the size of the testing emails! |
# Reduce the size of the testing emails! |
356 |
head -100 Makefile > $CDIR/Makefile_head |
head -100 Makefile > $CDIR/Makefile_head |
385 |
cp make.log $CDIR"/make.log" |
cp make.log $CDIR"/make.log" |
386 |
return 1 |
return 1 |
387 |
fi |
fi |
388 |
|
echo successful 1>&2 |
389 |
|
else |
390 |
|
echo '' |
391 |
fi |
fi |
|
echo successful 1>&2 |
|
392 |
exit 0 |
exit 0 |
393 |
) |
) |
394 |
fi |
fi |
447 |
cd $1; |
cd $1; |
448 |
if test -r Makefile ; then |
if test -r Makefile ; then |
449 |
printf 'make ... ' 1>&2 |
printf 'make ... ' 1>&2 |
450 |
if test "x$ADM" = x ; then |
if test "x$ADM" = xt ; then |
451 |
|
$MAKE adall >> make.log 2>&1 |
452 |
|
elif test "x$OADM" = xt ; then |
453 |
|
$MAKE adAll >> make.log 2>&1 |
454 |
|
else |
455 |
if test "x$JOBS" = x ; then |
if test "x$JOBS" = x ; then |
456 |
$MAKE >> make.log 2>&1 |
$MAKE >> make.log 2>&1 |
457 |
else |
else |
458 |
$MAKE -j $JOBS >> make.log 2>&1 |
$MAKE -j $JOBS >> make.log 2>&1 |
459 |
fi |
fi |
|
else |
|
|
$MAKE adall >> make.log 2>&1 |
|
460 |
fi |
fi |
461 |
RETVAL=$? |
RETVAL=$? |
462 |
if test "x$RETVAL" != x0 ; then |
if test "x$RETVAL" != x0 ; then |
527 |
if test -d $1 ; then |
if test -d $1 ; then |
528 |
( |
( |
529 |
cd $1 ; shift |
cd $1 ; shift |
530 |
|
inpMPI=`(cd ../$1 ; find . -name "*.mpi" -print | sed 's:^\./::')` |
531 |
|
for xx in $inpMPI ; do |
532 |
|
if test -r "../"$1"/"$xx ; then |
533 |
|
# found 1 _mpi sfx file in 1rst input dir and it is readable |
534 |
|
yy=`echo $xx | sed 's:\.mpi$::'` |
535 |
|
if test "x$MPI" = "xt" ; then |
536 |
|
# mpi test: remove symbolic link & link _mpi sfx file |
537 |
|
if test -h $yy ; then rm -f $yy ; fi |
538 |
|
if test ! -r $yy ; then |
539 |
|
ln -sf "../"$1"/"$xx $yy ; |
540 |
|
printf "$xx " 1>&2 |
541 |
|
fi |
542 |
|
else |
543 |
|
# not mpi test: remove symbolic link |
544 |
|
if test -h $yy ; then rm -f $yy ; fi |
545 |
|
fi |
546 |
|
fi |
547 |
|
done |
548 |
if test -r "../"$1"/eedata.mth" ; then |
if test -r "../"$1"/eedata.mth" ; then |
549 |
# found eedata.mth in 1rst input dir and it is readable |
# found eedata.mth in 1rst input dir and it is readable |
550 |
if test "x$MULTI_THREAD" = "xt" ; then |
if test "x$MULTI_THREAD" = "xt" ; then |
742 |
} |
} |
743 |
|
|
744 |
|
|
745 |
|
check_eedata() |
746 |
|
{ |
747 |
|
# check_eedata size.h eedata |
748 |
|
if [ $# -eq 2 ] ; then |
749 |
|
if test -f $1 -a -f $2 ; then |
750 |
|
sx=`grep "^ & *nSx *=" $1 | sed "s/^ & *nSx *=//" | sed 's/, *$//'` |
751 |
|
nx=`grep "^ *nTx *=" $2 | tail -1 | sed 's/^ *nTx *= *//' | sed "s/, *$//"` |
752 |
|
if test "x$nx" = x ; then |
753 |
|
rx=10 |
754 |
|
else |
755 |
|
rx=`expr $sx % $nx` |
756 |
|
fi |
757 |
|
sy=`grep "^ & *nSy *=" $1 | sed "s/^ & *nSy *=//" | sed 's/, *$//'` |
758 |
|
ny=`grep "^ *nTy *=" $2 | tail -1 | sed 's/^ *nTy *= *//' | sed "s/, *$//"` |
759 |
|
if test "x$ny" = x ; then |
760 |
|
ry=20 |
761 |
|
else |
762 |
|
ry=`expr $sy % $ny` |
763 |
|
fi |
764 |
|
echo `expr $rx + $ry` |
765 |
|
else |
766 |
|
echo '-1' |
767 |
|
fi |
768 |
|
else |
769 |
|
echo '-2' |
770 |
|
fi |
771 |
|
|
772 |
|
} |
773 |
|
|
774 |
############################################################################### |
############################################################################### |
775 |
|
|
776 |
|
|
814 |
DELDIR= |
DELDIR= |
815 |
|
|
816 |
ADM= |
ADM= |
817 |
|
OADM= |
818 |
|
|
819 |
# list of pTracers to check for monitor output |
# list of pTracers to check for monitor output |
820 |
PTRACERS_NUM="1 2 3 4 5" |
PTRACERS_NUM="1 2 3 4 5" |
916 |
|
|
917 |
-adm | -ad) ADM=t ;; |
-adm | -ad) ADM=t ;; |
918 |
|
|
919 |
|
-oad) OADM=t; NODEPEND=t ;; |
920 |
|
|
921 |
-ieee) IEEE=true ;; |
-ieee) IEEE=true ;; |
922 |
-noieee) IEEE= ;; |
-noieee) IEEE= ;; |
923 |
-gsl) GSL=t ;; |
-gsl) GSL=t ;; |
960 |
inputdir=input_ad |
inputdir=input_ad |
961 |
ref_outp="output_adm.txt" |
ref_outp="output_adm.txt" |
962 |
EXECUTABLE="mitgcmuv_ad" |
EXECUTABLE="mitgcmuv_ad" |
963 |
|
elif test "x$OADM" = xt ; then |
964 |
|
code_dir=code_oad |
965 |
|
inputdir=input_oad |
966 |
|
ref_outp="output_oadm.txt" |
967 |
|
EXECUTABLE="mitgcmuv_ad" |
968 |
else |
else |
969 |
code_dir=code |
code_dir=code |
970 |
inputdir=input |
inputdir=input |
1032 |
# (use default or load experiment-specific list from file "tr_checklist") |
# (use default or load experiment-specific list from file "tr_checklist") |
1033 |
# content : 1rst = main variable used to decide if it pass or FAIL |
# content : 1rst = main variable used to decide if it pass or FAIL |
1034 |
# others = number of matching digits to be printed in summary.txt |
# others = number of matching digits to be printed in summary.txt |
1035 |
if test "x$ADM" = x ; then |
if test "x$ADM" = x -a "x$OADM" = x; then |
1036 |
DEF_CHECK_LIST='PS PS T+ S+ U+ V+ pt1+ pt2+ pt3+ pt4+ pt5+' |
DEF_CHECK_LIST='PS PS T+ S+ U+ V+ pt1+ pt2+ pt3+ pt4+ pt5+' |
1037 |
EMPTY_RESULTS='.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..' |
EMPTY_RESULTS='.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..' |
1038 |
LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'` |
LEN_CHECK_LIST=`echo $DEF_CHECK_LIST | sed 's/ [a-zA-Z0-9]*+/&mn &mx &av &sd/g' | awk '{print NF-1}'` |
1067 |
BASE="tr_"$MACH"_"$DATE"_" |
BASE="tr_"$MACH"_"$DATE"_" |
1068 |
if test "x$OUTDIR" != x ; then |
if test "x$OUTDIR" != x ; then |
1069 |
BASE="tr_"$OUTDIR"_"$DATE"_" |
BASE="tr_"$OUTDIR"_"$DATE"_" |
1070 |
|
else |
1071 |
|
short_name=`hostname | sed 's/\..*$//'` |
1072 |
|
BASE="tr_"$short_name"_"$DATE"_" |
1073 |
fi |
fi |
1074 |
DNUM=0 |
DNUM=0 |
1075 |
DRESULTS="$BASE$DNUM" |
DRESULTS="$BASE$DNUM" |
1116 |
fi |
fi |
1117 |
echo |
echo |
1118 |
echo >> $SUMMARY |
echo >> $SUMMARY |
1119 |
if test "x$ADM" = x ; then |
if test "x$ADM" = x -a "x$OADM" = x; then |
1120 |
if [ $MATCH_CRIT -lt 10 ] ; |
if [ $MATCH_CRIT -lt 10 ] ; |
1121 |
then line_0="default "$MATCH_CRIT ; |
then line_0="default "$MATCH_CRIT ; |
1122 |
else line_0="default "$MATCH_CRIT ; fi |
else line_0="default "$MATCH_CRIT ; fi |
1170 |
|
|
1171 |
# Cleanup only! |
# Cleanup only! |
1172 |
if test "x$CLEANUP" = xt ; then |
if test "x$CLEANUP" = xt ; then |
1173 |
if test -r $BUILD_DIR/Makefile ; then |
echo -n ' --- dir:' $BUILD_DIR ': ' |
1174 |
echo ' ------ clean dir:' $dir/$builddir |
makeclean $BUILD_DIR |
1175 |
( cd $BUILD_DIR ; make CLEAN ) |
rm -f $BUILD_DIR/$EXECUTABLE |
|
fi |
|
1176 |
if test -d $dir/$rundir/CVS ; then |
if test -d $dir/$rundir/CVS ; then |
1177 |
echo ' ------ clean dir:' $dir/$rundir |
echo -n ' --- dir:' $dir/$rundir ': ' |
1178 |
run_clean $dir/$rundir |
run_clean $dir/$rundir |
1179 |
fi |
fi |
1180 |
( |
trdir=`( cd $dir ; find . -type d -name "tr_run.*" -print | sed 's/^.\///')` |
1181 |
cd $dir |
ttd=`echo $trdir | wc -w` |
1182 |
rm -rf tr_run.* |
if test $ttd != 0 ; then |
1183 |
) |
echo ' --- rm dir:' $trdir |
1184 |
|
( cd $dir ; rm -rf $trdir ) |
1185 |
|
fi |
1186 |
continue |
continue |
1187 |
fi |
fi |
1188 |
|
|
1204 |
echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir" |
echo "can't find \"$dir/input/eedata.mth\" -- skipping $dir" |
1205 |
continue |
continue |
1206 |
fi |
fi |
1207 |
|
if test "x$MPI" = "xt" -a "x$MULTI_THREAD" = "xt" ; then |
1208 |
|
retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/input/eedata.mth"` |
1209 |
|
if test $retv != 0 ; then |
1210 |
|
echo "input/eedata.mth tiling misfit -- skipping $dir" |
1211 |
|
continue |
1212 |
|
fi |
1213 |
|
fi |
1214 |
|
|
1215 |
# Check whether there are "extra runs" for this testdir |
# Check whether there are "extra runs" for this testdir |
1216 |
extra_runs= |
extra_runs= |
1221 |
refExOut=`echo $ref_outp | sed "s/\./.${name}./"` |
refExOut=`echo $ref_outp | sed "s/\./.${name}./"` |
1222 |
outf="$dir/results/$refExOut" |
outf="$dir/results/$refExOut" |
1223 |
if test -f $outf -a -r $outf ; then |
if test -f $outf -a -r $outf ; then |
1224 |
if test "x$MULTI_THREAD" = "xt" ; then |
if test "x$MULTI_THREAD" = "xt" ; then |
1225 |
if test -r $dir"/"$exd"/eedata.mth" ; then |
if test -r $dir"/"$exd"/eedata.mth" ; then |
1226 |
|
if test "x$MPI" = "xt" ; then |
1227 |
|
retv=`check_eedata $CODE_DIR"/SIZE.h_mpi" $dir"/"$exd"/eedata.mth"` |
1228 |
|
if test $retv = 0 ; then |
1229 |
extra_runs="$extra_runs $name" |
extra_runs="$extra_runs $name" |
1230 |
#else echo $dir"/"$exd"/eedata.mth: not found" |
else |
1231 |
|
echo $exd"/eedata.mth tiling misfit -- skipping $dir" |
1232 |
fi |
fi |
1233 |
else |
else |
1234 |
extra_runs="$extra_runs $name" |
extra_runs="$extra_runs $name" |
1235 |
|
fi |
1236 |
|
#else echo $dir"/"$exd"/eedata.mth: not found" |
1237 |
fi |
fi |
1238 |
|
else |
1239 |
|
extra_runs="$extra_runs $name" |
1240 |
|
fi |
1241 |
fi |
fi |
1242 |
done |
done |
1243 |
|
|