| 1 | #!/bin/csh | 
| 2 | # | 
| 3 | # Example PBS script to run a job on the myrinet-3 cluster. | 
| 4 | # The lines beginning #PBS set various queuing parameters. | 
| 5 | # | 
| 6 | # o -N Job Name | 
| 7 | #PBS -N oce_1 | 
| 8 | # | 
| 9 | # | 
| 10 | # o -l resource lists that control where job goes | 
| 11 | #      here we ask for 3 nodes, each with the attribute "p4". | 
| 12 | #PBS -l nodes=4:p4 | 
| 13 | # | 
| 14 | # o Where to write output | 
| 15 | # #PBS -e TTT.err | 
| 16 |  | 
| 17 | # #PBS -o TTT.out | 
| 18 |  | 
| 19 | # | 
| 20 | # o Export all my environment variables to the job | 
| 21 | #PBS -V | 
| 22 | # | 
| 23 |  | 
| 24 | echo 'start' | 
| 25 | #------------------- | 
| 26 | set namPBS=oce_1 | 
| 27 | set runDir=$SC6/oce_glob/run_1 | 
| 28 | set r2nDir=$SC6/oce_glob/run00 | 
| 29 | set executable=mitgcmuv.ifc+mpi | 
| 30 | set nit1mn=1800 | 
| 31 | set endRun=100 | 
| 32 | set partmn=25 | 
| 33 | #------------------- | 
| 34 | # echo 'run in dir :' $runDir | 
| 35 | set prc2='N' | 
| 36 | cd $runDir | 
| 37 |  | 
| 38 | set its=`egrep 'nIter0' data | sed 's/ nIter0=//'| sed 's/,$//'` | 
| 39 | set nms=`expr $its / $nit1mn` | 
| 40 | set nMs = `printf "%3.3i\n" $nms` | 
| 41 | set nme=`expr $nms + $partmn` | 
| 42 | set nMe = `printf "%3.3i\n" $nme` | 
| 43 | set ite=`expr $nme \* $nit1mn` | 
| 44 |  | 
| 45 | set numPBS=`echo $PBS_NODEFILE | sed 's/\/usr\/spool\/PBS\/aux\///g'| sed 's/\.cg01//g'` | 
| 46 | touch move_TTT_files | 
| 47 | echo mv $namPBS.o$numPBS TTT.out.$nMe >> move_TTT_files | 
| 48 | echo mv $namPBS.e$numPBS TTT.err.$nMe >> move_TTT_files | 
| 49 |  | 
| 50 | #---------------------------------------------- | 
| 51 | echo $PBS_NODEFILE | 
| 52 | cat  $PBS_NODEFILE | 
| 53 | echo 'The list above shows the nodes this job has exclusive access to.' | 
| 54 | echo 'The list can be found in the file named in the variable $PBS_NODEFILE' | 
| 55 |  | 
| 56 | rm -f run_here | 
| 57 | date > run_here | 
| 58 | cat $PBS_NODEFILE >> run_here | 
| 59 | echo 'PBS job Number:' $numPBS >> run_here | 
| 60 | echo on `hostname` run $executable 'in dir:' $runDir >> run_here | 
| 61 |  | 
| 62 | if ( $nms >= $endRun ) then | 
| 63 | echo 'Run already finished : month' $nms | 
| 64 | exit 9 | 
| 65 | endif | 
| 66 |  | 
| 67 | echo on `hostname` run $executable 'in dir:' `pwd` | 
| 68 | echo 'start at month=' $nMs '(it=' $its '), run until mn=' $nMe '(it=' $ite ')' | 
| 69 | echo 'start at month=' $nms '(it=' $its '), run until mn=' $nme '(it=' $ite ')'>> run_here | 
| 70 |  | 
| 71 | #------------------- | 
| 72 | if ( -f $r2nDir/IamReady ) then | 
| 73 | set prc2=`sed -n '2 p' $PBS_NODEFILE` | 
| 74 | echo send 2nd job on $prc2 | 
| 75 | rsh $prc2 $r2nDir/runscript >& $r2nDir/TTT.out2.$nMe & | 
| 76 | else | 
| 77 | echo 'no file dir_run_2/IamReady => no 2nd run.' | 
| 78 | endif | 
| 79 | #------------------- | 
| 80 |  | 
| 81 | #cp -p run_here std_outp | 
| 82 | #echo ' ' >> std_outp | 
| 83 | # ./$executable >>& std_outp | 
| 84 |  | 
| 85 | cat $PBS_NODEFILE > mf | 
| 86 | set ncpus = ( `wc -l mf | awk '{print $1}'` ) | 
| 87 | /usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/intel/bin/mpirun.ch_gm -machinefile mf --gm-kill 5 -v -np $ncpus ./$executable | 
| 88 | set out=$? | 
| 89 | echo 'end with status' $out | 
| 90 |  | 
| 91 | set iTe = `printf "%10.10i\n" $ite` | 
| 92 | if ( -f pickup.$iTe.001.001.data ) then | 
| 93 | set out=0 | 
| 94 | else | 
| 95 | set out=1 | 
| 96 | endif | 
| 97 |  | 
| 98 | echo 'end with status' $out | 
| 99 |  | 
| 100 | if ( $out != 0 ) then | 
| 101 | echo 'bad return status => STOP here' | 
| 102 | else | 
| 103 | #mv std_outp std_outp.$nMe | 
| 104 | cp -p run_here std_outp.$nMe | 
| 105 | echo ' ' >> std_outp.$nMe | 
| 106 | cat  STDOUT.0000 >> std_outp.$nMe | 
| 107 | mv -f STDOUT.000? STDERR.000? temp | 
| 108 | #- prepare new submission : | 
| 109 | sed "s/ nIter0=$its/ nIter0=$ite/" data > TTT.tmp | 
| 110 | mv TTT.tmp data | 
| 111 | endif | 
| 112 |  | 
| 113 | if ( $out == 0 ) then | 
| 114 | if ( $nme >= $endRun ) then | 
| 115 | echo 'Run finished : month' $nme 'done !' | 
| 116 | else | 
| 117 | qsub runScript | 
| 118 | endif | 
| 119 | endif | 
| 120 | exit $out |