[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