[cig-commits] commit: Add Usage, cleanup, and fix bad run time estimates and make it really run in the development queue
Mercurial
hg at geodynamics.org
Sun Jul 3 20:04:34 PDT 2011
changeset: 17:6589cdf7993c
user: Walter Landry <wlandry at caltech.edu>
date: Fri Jun 24 16:45:34 2011 -0700
files: backend/daemon.py backend/specfem_launcher.sh
description:
Add Usage, cleanup, and fix bad run time estimates and make it really run in the development queue
diff -r d8faa10b1580 -r 6589cdf7993c backend/daemon.py
--- a/backend/daemon.py Tue Jun 21 16:00:25 2011 -0700
+++ b/backend/daemon.py Fri Jun 24 16:45:34 2011 -0700
@@ -166,7 +166,9 @@ class ForkJobManager(JobManager):
status = self.waitForJobToFinish(job, pid)
+ self.writeSUCost(job)
self.uploadOutputFilesForJob(job)
+ self.cleanupJob(job)
if (os.WIFSIGNALED(status)):
statusStr = "signal %d" % os.WTERMSIG(status)
@@ -196,9 +198,14 @@ class ForkJobManager(JobManager):
extraArgs)
+ def writeSUCost(self, job):
+ return
+
def uploadOutputFilesForJob(self, job):
return
+ def cleanupJob(self, job):
+ return
def waitForJobToFinish(self, job, pid):
ticks = 2
@@ -240,6 +247,14 @@ class RemoteShellJobManager(ForkJobManag
return
+ def writeSUCost(self, job):
+ argv = self.argvForJob(job,extraArgs=['usage'])
+ try:
+ self.spawn(*argv)
+ except Exception:
+ pass
+ return
+
def uploadOutputFilesForJob(self, job):
remoteDirectory = self.remoteDirectoryForJob(job)
@@ -251,6 +266,15 @@ class RemoteShellJobManager(ForkJobManag
self.spawn(*argv)
except Exception:
pass
+ return
+
+ def cleanupJob(self, job):
+ # remoteDirectory = self.remoteDirectoryForJob(job)
+ # argv = self.rsh + [("rm -rf " + remoteDirectory)]
+ # try:
+ # self.spawn(*argv)
+ # except Exception:
+ # pass
return
@@ -545,7 +569,7 @@ class SpecfemRun(Run):
)
job.urlForInputFile = self.urlForInputFile
job.inputFiles = [parameters, event, stations, model]
- job.outputFiles = ["specfem3dglobe.tar.gz", "output_mesher.txt", "output_solver.txt", "output_build.txt"]
+ job.outputFiles = ["specfem3dglobe.tar.gz", "output_mesher.txt", "output_solver.txt", "output_build.txt", "usage"]
job.monitorArgs = ["monitor"]
yield job
return
diff -r d8faa10b1580 -r 6589cdf7993c backend/specfem_launcher.sh
--- a/backend/specfem_launcher.sh Tue Jun 21 16:00:25 2011 -0700
+++ b/backend/specfem_launcher.sh Fri Jun 24 16:45:34 2011 -0700
@@ -17,6 +17,10 @@ if [ $# -ge 2 ]; then
fi
exit 0
fi
+ elif [ $2 == "usage" ]; then
+ cd $WORK/seismo/run${run_id}
+ qacct -j Specfem3D_Portal_$1 > usage
+ exit 0
fi
fi
@@ -36,7 +40,7 @@ make specfem3D >> ../output_build.txt
nproc_xi=`grep NPROC_XI DATA/Par_file | cut -d = -f 2`
nproc_eta=`grep NPROC_ETA DATA/Par_file | cut -d = -f 2`
-n_procs=`echo $nproc_xi*$nproc_eta | bc`
+n_procs_per_chunk=`echo $nproc_xi*$nproc_eta | bc`
n_xi=`grep NEX_XI DATA/Par_file | cut -d = -f 2`
n_eta=`grep NEX_ETA DATA/Par_file | cut -d = -f 2`
@@ -46,7 +50,7 @@ setup_time=30
setup_time=30
factor=`echo '(192*192*192*10/(4*4))/400' | bc`
-run_time=`echo "$setup_time + $n_xi*$n_xi*$n_xi*$record_length/($n_procs*$factor)" | bc`
+run_time=`echo "$setup_time + $n_xi*$n_xi*$n_xi*$record_length/($n_procs_per_chunk*$factor)" | bc`
hours=`echo "$run_time/60" | bc`
minutes=`echo "$run_time%60/1" | bc | xargs -n 1 printf "%02d"`
@@ -54,15 +58,16 @@ perl -pi -e s/RUNID/${run_id}/ sge_scrip
perl -pi -e s/RUNID/${run_id}/ sge_script
perl -pi -e s/HOURS/${hours}/ sge_script
perl -pi -e s/MINUTES/${minutes}/ sge_script
+
+n_chunks=`grep NCHUNKS DATA/Par_file | cut -d = -f 2`
+n_procs=`echo $n_chunks*$nproc_xi*$nproc_eta | bc`
+
perl -pi -e s/NPROCS/${n_procs}/ sge_script
# Put the job on the development queue if it fits
-n_chunks=`grep NCHUNKS DATA/Par_file | cut -d = -f 2`
-n_procs=`echo $n_chunks*$nproc_xi*$nproc_eta | bc`
-
-if [ hours -lt 2 ]; then
- if [ n_procs -le 256 ]; then
+if [ $hours -lt 2 ]; then
+ if [ $n_procs -le 256 ]; then
perl -pi -e s/normal/development/ sge_script
fi
fi
More information about the CIG-COMMITS
mailing list