/[MITgcm]/MITgcm_contrib/test_scripts/svante/test_comp_ifc.sh
ViewVC logotype

Annotation of /MITgcm_contrib/test_scripts/svante/test_comp_ifc.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (hide annotations) (download) (as text)
Sat Jan 14 16:20:04 2017 UTC (8 years, 6 months ago) by jmc
Branch: MAIN
Changes since 1.2: +9 -8 lines
File MIME type: application/x-sh
fix previous modif

1 jmc 1.1 #! /usr/bin/env bash
2    
3 jmc 1.3 # $Header: /u/gcmpack/MITgcm_contrib/test_scripts/svante/test_comp_ifc.sh,v 1.2 2017/01/13 22:41:26 jmc Exp $
4 jmc 1.1
5     # Test script for MITgcm to run on head-node of svante cluster (svante.mit.edu)
6    
7     # defaults
8     #export PATH="$PATH:/usr/local/bin"
9     if [ -d ~/bin ]; then export PATH=$PATH:~/bin ; fi
10     #- to get case insensitive "ls" (and order of tested experiments)
11     export LC_ALL="en_US.UTF-8"
12     # Turn off stack limit for FIZHI & AD-tests
13     ulimit -s unlimited
14    
15     if test -f /etc/profile.d/modules.sh ; then
16     . /etc/profile.d/modules.sh
17     fi
18    
19     #- load standard modules:
20     module add fedora torque maui svante
21     module list
22    
23     #- method to acces CVS:
24     cmdCVS='cvs -d :pserver:cvsanon@mitgcm.org:/u/gcmpack -q'
25    
26 jmc 1.2 headNode=`hostname -s`
27 jmc 1.1 QSUB="qsub"
28 jmc 1.3 QSTAT="qstat -u $USER"
29 jmc 1.2 dNam=$headNode
30 jmc 1.1 HERE="$HOME/test_${dNam}"
31    
32     SUB_DIR="$HERE/$dNam"
33     OUT_DIR="$HERE/output"
34     TST_DISK="/net/fs09/d0/jm_c"
35     TST_DIR="$TST_DISK/test_${dNam}"
36     #SUB_DIR="$HERE/temp"
37    
38     # checkOut=2 : download new code ;
39     # =1 : update code (if no existing code -> swith to 2)
40     # =0 : use existing code (if no existing code -> swith to 2)
41     checkOut=1
42     option=
43    
44     dInWeek=`date +%a`
45     TODAY=`date +%d`
46     #tst_list='gads gadm gfo+rs gmpi gmth gmp2+rs ifc pgi'
47     #if test "x$dInWeek" = xSun ; then tst_list="$tst_list tlm oad" ; fi
48     tst_list='ifc+rs'
49    
50     #option="-nc" ; checkOut=1
51     #option="-q" ; checkOut=0
52    
53     cd $TST_DISK ; pwd
54     if test ! -d $TST_DIR ; then
55     echo -n "Creating a working dir: $TST_DIR ..."
56     #/bin/rm -rf $TST_DIR
57     mkdir $TST_DIR
58     retVal=$?
59     if test "x$retVal" != x0 ; then
60     echo "Error: unable to make dir: $TST_DIR (err=$retVal ) --> Exit"
61     exit 1
62     fi
63     fi
64     cd $TST_DIR
65    
66     #------------------------------------------------------------------------
67    
68     #firstTst=`echo $tst_list | awk '{print $1}'`
69     #last_Tst=`echo $tst_list | awk '{print $NF}'`
70     for tt in $tst_list
71     do
72    
73     echo "================================================================"
74     newCode=$checkOut
75     typ=`echo $tt | sed 's/+rs//'`
76     gcmDIR="MITgcm_$typ"
77     tst2submit="run_tst_$typ"
78 jmc 1.3 JOB=$tst2submit
79 jmc 1.1 addExp=''
80     LOG_FIL=$OUT_DIR/output_${typ}
81     #- check day and time:
82     curDay=`date +%d` ; curHour=`date +%H`
83     if [ $curDay -ne $TODAY ] ; then
84     date ; echo "day is over => skip test $typ"
85     continue
86     fi
87     if [ $curHour -ge 18 ] ; then
88     date ; echo "too late to run test $typ"
89     continue
90     fi
91     #- check for unfinished jobs
92 jmc 1.3 job_exist=`$QSTAT | grep $JOB | wc -l`
93 jmc 1.1 if test "x$job_exist" != x0 ; then
94     echo $tst2submit
95 jmc 1.3 echo "job '$JOB' still in queue:"
96     $QSTAT | grep $JOB
97 jmc 1.1 echo " => skip this test"
98     continue
99     fi
100     #- clean-up old output files
101     rm -f ${LOG_FIL}*.old $OUT_DIR/$tst2submit.std???.old
102     oldS=`ls $LOG_FIL $OUT_DIR/$tst2submit.std??? 2> /dev/null`
103     for xx in $oldS ; do mv $xx $xx.old ; done
104     #for xx in $oldS ; do
105     # if test -f $xx.sav ; then mv $xx.sav $xx.old ; fi
106     # mv $xx $xx.sav
107     #done
108     if test -d prev ; then
109     #-- save previous summary: tr_out.txt* tst_2+2_out.txt
110     oldS=`( cd ${gcmDIR}/verification ; ls t*_out.txt* ) 2> /dev/null`
111     for xx in $oldS ; do
112     #ss=`/bin/ls -l ${gcmDIR}/verification/$xx | awk '{print $6 $7}'`
113     ss=`/bin/ls -l --time-style=iso ${gcmDIR}/verification/$xx | awk '{print $6}'`
114     yy=`echo $xx | sed -e "s/\.txt.old/.$typ.c/" \
115     -e "s/2_out.txt/2.$typ./" -e "s/\.txt/.$typ.r/"`
116     cp -p ${gcmDIR}/verification/$xx prev/${yy}$ss
117     done
118     fi
119     touch $LOG_FIL
120    
121     #- clean and update code
122     if [ $newCode -eq 1 ] ; then
123     if test -d $gcmDIR/CVS ; then
124     echo "cleaning output from $gcmDIR/verification :" | tee -a $LOG_FIL
125     #- remove previous output tar files and tar & remove previous output-dir
126     /bin/rm -f $gcmDIR/verification/??_${dNam}*_????????_?.tar.gz
127     ( cd $gcmDIR/verification
128 jmc 1.2 listD=`ls -1 -d tr_${headNode}_????????_? ??_${dNam}-${sfx}_????????_? 2> /dev/null`
129 jmc 1.1 for dd in $listD
130     do
131     if test -d $dd ; then
132     tar -cf ${dd}".tar" $dd > /dev/null 2>&1 && gzip ${dd}".tar" && /bin/rm -rf $dd
133     retVal=$?
134     if test "x$retVal" != x0 ; then
135     echo "ERROR in tar+gzip prev outp-dir: $dd"
136     echo " on '"`hostname`"' (return val=$retVal) but continue"
137     fi
138     fi
139     done )
140     if test $tt != $typ ; then
141     ( cd $gcmDIR/verification ; ../tools/do_tst_2+2 -clean ) >> $LOG_FIL 2>&1
142     fi
143     ( cd $gcmDIR/verification ; ./testreport -clean ) >> $LOG_FIL 2>&1
144     echo "cvs update of dir $gcmDIR :" | tee -a $LOG_FIL
145     ( cd $gcmDIR ; $cmdCVS update -P -d ) >> $LOG_FIL 2>&1
146     retVal=$?
147     if test "x$retVal" != x0 ; then
148     echo "cvs update on '"`hostname`"' fail (return val=$retVal) => exit"
149     exit
150     fi
151     else
152     echo "no dir: $gcmDIR/CVS => try a fresh check-out" | tee -a $LOG_FIL
153     newCode=2
154     fi
155     fi
156     #- download new code
157     if [ $newCode -eq 2 ] ; then
158     test -e $gcmDIR && rm -rf $gcmDIR
159     echo -n "Downloading the MITgcm code using: $cmdCVS ..." | tee -a $LOG_FIL
160     $cmdCVS co -P -d $gcmDIR MITgcm > /dev/null
161     echo " done" | tee -a $LOG_FIL
162     for exp2add in $addExp ; do
163     echo " add dir: $exp2add (from Contrib:verification_other)"| tee -a $LOG_FIL
164     ( cd $gcmDIR/verification ; $cmdCVS co -P -d $exp2add \
165     MITgcm_contrib/verification_other/$exp2add > /dev/null 2>&1 )
166     done
167     /usr/bin/find $gcmDIR -type d | xargs chmod g+rxs
168     /usr/bin/find $gcmDIR -type f | xargs chmod g+r
169     fi
170     #---------------------------------------------------
171     #-- set the testreport command:
172     comm="./testreport"
173     # if test $typ = $typ = 'gads' -o $typ = 'gadm' ; then
174     # comm="$comm -adm"
175     # elif test $typ = 'oad' ; then
176     # comm="$comm -oad"
177     # elif test $typ = 'tlm' ; then
178     # comm="$comm -tlm"
179     # elif test $typ = 'gmth' -o $typ = 'gmp2' ; then
180     # export GOMP_STACKSIZE=400m
181     # export OMP_NUM_THREADS=2
182     # comm="$comm -mth"
183     # else
184     # comm="$comm -md cyrus-makedepend"
185     # comm="$comm -t hs94.cs-32x32x5"
186     # fi
187     if test "x$dInWeek" = xSun ; then
188     comm="$comm -fast"
189     #else
190     # comm="$comm -devel"
191     fi
192    
193     #-- set the optfile (+ mpi & match-precision)
194     MPI=0 ; MC=13
195     case $typ in
196     'gfo'|'gads'|'oad'|'tlm'|'gmth') comm="$comm -match $MC -devel"
197     OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
198     'ifc') MPI=6; #comm="$comm -devel"
199     OPTFILE='../tools/build_options/linux_amd64_ifort11' ;;
200     'pgi') MPI=6; #comm="$comm -devel"
201     OPTFILE='../tools/build_options/linux_amd64_pgf77' ;;
202     'gadm'|'gmpi'|'gmp2') MPI=6; comm="$comm -match $MC -devel"
203     if test $typ = 'gmp2' ; then MPI=3 ; fi
204     OPTFILE='../tools/build_options/linux_amd64_gfortran' ;;
205     *) OPTFILE= ;;
206     esac
207     #-- set MPI command:
208     # if test $MPI != 0 ; then
209     # fi
210    
211     #-- set specific Env Vars:
212     #if test $typ = 'oad' ; then
213     # source ~jmc/mitgcm/bin/setenv_OpenAD.sh
214     #fi
215     if test $typ = 'ifc' ; then
216     module add intel
217     module add mvapich2
218     fi
219     #if test $typ = 'pgi' ; then
220     #fi
221    
222     #-- run the testreport command:
223     echo -n "Running testreport using" | tee -a $LOG_FIL
224     if test "x$OPTFILE" != x ; then
225     comm="$comm -of=$OPTFILE"
226     fi
227     if test $MPI != 0 ; then comm="$comm -MPI $MPI" ; fi
228 jmc 1.3 echo " option '-nr' (norun):" | tee -a $LOG_FIL
229 jmc 1.1 comm="$comm -nr"
230     if test "x$option" != x ; then comm="$comm $option" ; fi
231     echo " \"eval $comm\"" | tee -a $LOG_FIL
232     echo "======================"
233     ( cd $gcmDIR/verification
234     eval $comm >> $LOG_FIL 2>&1
235     )
236     #sed -n "/^An email /,/^======== End of testreport / p" $LOG_FIL
237     sed -n "/^No results email was sent/,/^======== End of testreport / p" $LOG_FIL
238     echo "" | tee -a $LOG_FIL
239    
240     #-- submit PBS script to run
241     if test -e $SUB_DIR/${tst2submit}.pbs ; then
242     echo " submit PBS bach script '$SUB_DIR/${tst2submit}.pbs'" | tee -a $LOG_FIL
243     $QSUB $SUB_DIR/${tst2submit}.pbs | tee -a $LOG_FIL
244 jmc 1.3 echo " job '$JOB' in queue:" | tee -a $LOG_FIL
245     $QSTAT | grep $JOB | tee -a $LOG_FIL
246 jmc 1.1 else
247     echo " no PBS script '$SUB_DIR/${tst2submit}.pbs' to submit"| tee -a $LOG_FIL
248     continue
249     fi
250    
251     #-- also test restart (test 2+2=4)
252     # if test $tt != $typ ; then
253     # echo "testing restart using:" | tee -a $LOG_FIL
254     # comm="../tools/do_tst_2+2 -o $dNam -a jmc@mitgcm.org"
255     # if test $MPI = 0 ; then
256     # echo " \"$comm\"" | tee -a $LOG_FIL
257     # echo "======================"
258     # $comm >> $LOG_FIL 2>&1
259     # else
260     # echo " \"$comm -mpi\"" | tee -a $LOG_FIL
261     # echo "======================"
262     # $comm -mpi >> $LOG_FIL 2>&1
263     # fi
264     # echo ; cat tst_2+2_out.txt
265     # echo
266     # fi
267     #--reset special setting:
268     export OMP_NUM_THREADS=1
269    
270     done

  ViewVC Help
Powered by ViewVC 1.1.22