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 fizhi |
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=6:p4 |
13 |
# |
14 |
#PBS -q four-twelve |
15 |
# |
16 |
# o Where to write output |
17 |
# #PBS -e TTT.err.$$ |
18 |
# |
19 |
# #PBS -o TTT.out.$$ |
20 |
# |
21 |
# |
22 |
# o Export all my environment variables to the job |
23 |
#PBS -V |
24 |
# |
25 |
|
26 |
echo 'start' |
27 |
#---------------------------------------------- |
28 |
set namPBS=fizhi |
29 |
set runDir=/SCRATCH/s04/molod/fizhi-cs-32x32x10-newvar/input |
30 |
set executable=/SCRATCH/s04/molod/fizhi-cs-32x32x10-newvar/build/mitgcmuv |
31 |
#------------------- |
32 |
# echo 'run in dir :' $runDir |
33 |
cd $runDir |
34 |
|
35 |
set its=`egrep 'nIter0' data | sed 's/ nIter0=//'| sed 's/,$//'` |
36 |
|
37 |
set numPBS=`echo $PBS_NODEFILE | sed 's/\/usr\/spool\/PBS\/aux\///g'| sed 's/\.cg01//g'` |
38 |
|
39 |
#-- avoid any output before this point ! |
40 |
#---------------------------------------------- |
41 |
#echo $PBS_NODEFILE |
42 |
#cat $PBS_NODEFILE |
43 |
#echo 'The list above shows the nodes this job has exclusive access to.' |
44 |
#echo 'The list can be found in the file named in the variable $PBS_NODEFILE' |
45 |
|
46 |
rm -f run_here |
47 |
date > run_here |
48 |
cat $PBS_NODEFILE >> run_here |
49 |
echo 'PBS job Number:' $numPBS >> run_here |
50 |
echo on `hostname` run $executable 'in dir:' $runDir >> run_here |
51 |
|
52 |
#------------------- |
53 |
rm -f IamReady |
54 |
echo on `hostname` run $executable 'in dir:' `pwd` |
55 |
|
56 |
#------------------- |
57 |
cp -p run_here std_outp |
58 |
echo ' ' >> std_outp |
59 |
|
60 |
cat $PBS_NODEFILE > mf |
61 |
set ncpus = ( `wc -l mf | awk '{print $1}'` ) |
62 |
if ( $ncpus == 1 ) then |
63 |
$executable >>& std_outp |
64 |
set out=$? |
65 |
echo 'end with status' $out |
66 |
else |
67 |
/usr/local/pkg/mpi/mpi-1.2.4..8a-gm-1.5/pgi/bin/mpirun.ch_gm -machinefile mf --gm-kill 5 -v -np $ncpus $executable |
68 |
set out=$? |
69 |
echo 'end with status' $out |
70 |
set out=0 |
71 |
endif |
72 |
|
73 |
echo 'Copying datetime file to datetime0 - time is: ' `cat datetime` |
74 |
cp datetime datetime0 |
75 |
|
76 |
set ite=`grep CHECKPOINT STDOUT.0000 | grep ckptA | sed 's/(PID.TID 0000.0001) %CHECKPOINT//' | sed 's/ //g' | sed 's/ckptA//'` |
77 |
set nitPick = `/home/molod/bin/add0upto10c $ite` |
78 |
if ( -f pickup.ckptA.001.001.data ) then |
79 |
echo 'file:' pickup.ckptA.001.001.data 'exist' |
80 |
if ( $out == 0 ) then |
81 |
#- prepare new submission : |
82 |
echo 'Copy pickup ckptA files to pickup ' $nitPick 'files' |
83 |
mv pickup.ckptA.001.001.data pickup.$nitPick.001.001.data |
84 |
mv pickup.ckptA.002.001.data pickup.$nitPick.002.001.data |
85 |
mv pickup.ckptA.003.001.data pickup.$nitPick.003.001.data |
86 |
mv pickup.ckptA.004.001.data pickup.$nitPick.004.001.data |
87 |
mv pickup.ckptA.005.001.data pickup.$nitPick.005.001.data |
88 |
mv pickup.ckptA.006.001.data pickup.$nitPick.006.001.data |
89 |
mv pickup.ckptA.001.001.meta pickup.$nitPick.001.001.meta |
90 |
mv pickup.ckptA.002.001.meta pickup.$nitPick.002.001.meta |
91 |
mv pickup.ckptA.003.001.meta pickup.$nitPick.003.001.meta |
92 |
mv pickup.ckptA.004.001.meta pickup.$nitPick.004.001.meta |
93 |
mv pickup.ckptA.005.001.meta pickup.$nitPick.005.001.meta |
94 |
mv pickup.ckptA.006.001.meta pickup.$nitPick.006.001.meta |
95 |
mv pickup_fizhi.ckptA.001.001.data pickup_fizhi.$nitPick.001.001.data |
96 |
mv pickup_fizhi.ckptA.002.001.data pickup_fizhi.$nitPick.002.001.data |
97 |
mv pickup_fizhi.ckptA.003.001.data pickup_fizhi.$nitPick.003.001.data |
98 |
mv pickup_fizhi.ckptA.004.001.data pickup_fizhi.$nitPick.004.001.data |
99 |
mv pickup_fizhi.ckptA.005.001.data pickup_fizhi.$nitPick.005.001.data |
100 |
mv pickup_fizhi.ckptA.006.001.data pickup_fizhi.$nitPick.006.001.data |
101 |
mv pickup_fizhi.ckptA.001.001.meta pickup_fizhi.$nitPick.001.001.meta |
102 |
mv pickup_fizhi.ckptA.002.001.meta pickup_fizhi.$nitPick.002.001.meta |
103 |
mv pickup_fizhi.ckptA.003.001.meta pickup_fizhi.$nitPick.003.001.meta |
104 |
mv pickup_fizhi.ckptA.004.001.meta pickup_fizhi.$nitPick.004.001.meta |
105 |
mv pickup_fizhi.ckptA.005.001.meta pickup_fizhi.$nitPick.005.001.meta |
106 |
mv pickup_fizhi.ckptA.006.001.meta pickup_fizhi.$nitPick.006.001.meta |
107 |
mv pickup_vegtiles.ckptA.001.001.data pickup_vegtiles.$nitPick.001.001.data |
108 |
mv pickup_vegtiles.ckptA.002.001.data pickup_vegtiles.$nitPick.002.001.data |
109 |
mv pickup_vegtiles.ckptA.003.001.data pickup_vegtiles.$nitPick.003.001.data |
110 |
mv pickup_vegtiles.ckptA.004.001.data pickup_vegtiles.$nitPick.004.001.data |
111 |
mv pickup_vegtiles.ckptA.005.001.data pickup_vegtiles.$nitPick.005.001.data |
112 |
mv pickup_vegtiles.ckptA.006.001.data pickup_vegtiles.$nitPick.006.001.data |
113 |
echo 'Change start iteration number for next run ' |
114 |
sed "s/ nIter0=$its/ nIter0=$ite/" data > data.tmp.$numPBS |
115 |
mv data.tmp.$numPBS data |
116 |
sleep 5 |
117 |
endif |
118 |
else |
119 |
echo 'file:' pickup.ckptA.001.001.data 'do not exist !' |
120 |
set out=9 |
121 |
endif |
122 |
|
123 |
if ( $out != 0 ) then |
124 |
echo 'bad return status => STOP here' |
125 |
exit $out |
126 |
endif |
127 |
|
128 |
touch IamReady |
129 |
qsub runScript |
130 |
|
131 |
exit |