From a4ac6859fc707cbff32475792fc358af0c674ed7 Mon Sep 17 00:00:00 2001 From: Bernie Date: Fri, 26 Aug 2011 13:32:44 +1000 Subject: [PATCH] Modified to load each module separately, work around bug in PBS qsub --- cluster_job.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/cluster_job.py b/cluster_job.py index 61814ca..5f19d62 100644 --- a/cluster_job.py +++ b/cluster_job.py @@ -21,13 +21,13 @@ def waitForJobCompletion(jobID): sleep(10) def runJobAndWait(script): - #print jobScript + print(script) jobID = script.launch() #print jobID waitForJobCompletion(jobID) class PBS_Script(object): - def __init__(self, command, walltime=None, name=None, memInGB=None, queue='batch', moduleList=None): + def __init__(self, command, walltime=None, name=None, memInGB=None, queue='batch', moduleList=None, logDir=None): self.command = command if queue in ['batch', 'smp']: self.queue = queue @@ -37,13 +37,17 @@ def __init__(self, command, walltime=None, name=None, memInGB=None, queue='batch self.memInGB = memInGB self.walltime = walltime self.moduleList = moduleList + self.logDir = logDir def __str__(self): script = ['#!/bin/bash'] - # XXX hack - script.append('#PBS -o log/%s' % self.name) - script.append('#PBS -e log/%s' % self.name) + # XXX fixme + # should include job id in the output name. + # should use the proper log directory. script.append('#PBS -q %s' % self.queue) + if self.logDir: + script.append('#PBS -o %s' % self.logDir) + script.append('#PBS -e %s' % self.logDir) if self.name: script.append('#PBS -N %s' % self.name) if self.memInGB: @@ -54,7 +58,8 @@ def __str__(self): if self.walltime: script.append('#PBS -l walltime=%s' % self.walltime) if type(self.moduleList) == list and len(self.moduleList) > 0: - script.append('module load %s' % ' '.join(self.moduleList)) + for item in self.moduleList: + script.append('module load %s' % item) script.append('cd $PBS_O_WORKDIR') script.append(self.command) return '\n'.join(script) + '\n' @@ -70,7 +75,3 @@ def launch(self): return stdout else: raise(Exception('qsub command failed with exit status: ' + str(returnCode))) - -#waitForJobCompletion(jobID) -#jobScript = PBS_Script("sleep 50", "00:00:50", "sleepy", "1") -#runJobAndWait(jobScript)