LSST Applications g0da5cf3356+25b44625d0,g17e5ecfddb+50a5ac4092,g1c76d35bf8+585f0f68a2,g295839609d+8ef6456700,g2e2c1a68ba+cc1f6f037e,g38293774b4+62d12e78cb,g3b44f30a73+2891c76795,g48ccf36440+885b902d19,g4b2f1765b6+0c565e8f25,g5320a0a9f6+bd4bf1dc76,g56364267ca+403c24672b,g56b687f8c9+585f0f68a2,g5c4744a4d9+78cd207961,g5ffd174ac0+bd4bf1dc76,g6075d09f38+3075de592a,g667d525e37+cacede5508,g6f3e93b5a3+da81c812ee,g71f27ac40c+cacede5508,g7212e027e3+eb621d73aa,g774830318a+18d2b9fa6c,g7985c39107+62d12e78cb,g79ca90bc5c+fa2cc03294,g881bdbfe6c+cacede5508,g91fc1fa0cf+82a115f028,g961520b1fb+2534687f64,g96f01af41f+f2060f23b6,g9ca82378b8+cacede5508,g9d27549199+78cd207961,gb065e2a02a+ad48cbcda4,gb1df4690d6+585f0f68a2,gb35d6563ee+62d12e78cb,gbc3249ced9+bd4bf1dc76,gbec6a3398f+bd4bf1dc76,gd01420fc67+bd4bf1dc76,gd59336e7c4+c7bb92e648,gf46e8334de+81c9a61069,gfed783d017+bd4bf1dc76,v25.0.1.rc3
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
lsst.ctrl.pool.parallel.Batch Class Reference
Inheritance diagram for lsst.ctrl.pool.parallel.Batch:
lsst.ctrl.pool.parallel.PbsBatch lsst.ctrl.pool.parallel.SlurmBatch lsst.ctrl.pool.parallel.SmpBatch

Public Member Functions

def __init__ (self, outputDir=None, numNodes=0, numProcsPerNode=0, numCores=0, queue=None, jobName=None, walltime=0.0, dryrun=False, doExec=False, mpiexec="", submit=None, options=None, verbose=False)
 Constructor. More...
 
def shebang (self)
 
def preamble (self, command, walltime=None)
 
def execution (self, command)
 
def createScript (self, command, walltime=None)
 Create script to be submitted. More...
 
def submitCommand (self, scriptName)
 Return command to submit script. More...
 
def run (self, command, walltime=None)
 Run the batch system. More...
 

Public Attributes

 outputDir
 
 numNodes
 
 numProcsPerNode
 
 numCores
 
 queue
 
 jobName
 
 walltime
 
 dryrun
 
 doExec
 
 mpiexec
 
 submit
 
 options
 
 verbose
 

Detailed Description

Base class for batch submission

Definition at line 68 of file parallel.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.ctrl.pool.parallel.Batch.__init__ (   self,
  outputDir = None,
  numNodes = 0,
  numProcsPerNode = 0,
  numCores = 0,
  queue = None,
  jobName = None,
  walltime = 0.0,
  dryrun = False,
  doExec = False,
  mpiexec = "",
  submit = None,
  options = None,
  verbose = False 
)

Constructor.

    @param outputDir: output directory, or None
    @param numNodes: number of nodes
    @param numProcsPerNode: number of processors per node
    @param numCores: number of cores (Slurm, SMP only)
    @param queue: name of queue, or None
    @param jobName: name of job, or None
    @param walltime: maximum wall clock time for job
    @param dryrun: Dry run (only print actions that would be taken)?
    @param doExec: exec the script instead of submitting to batch system?
    @param mpiexec: options for mpiexec
    @param submit: command-line options for batch submission (e.g., for qsub, sbatch)
    @param options: options to append to script header (e.g., #PBS or #SBATCH)
    @param verbose: produce verbose output?

Reimplemented in lsst.ctrl.pool.parallel.SmpBatch.

Definition at line 71 of file parallel.py.

73 verbose=False):
74 """!Constructor
75
76 @param outputDir: output directory, or None
77 @param numNodes: number of nodes
78 @param numProcsPerNode: number of processors per node
79 @param numCores: number of cores (Slurm, SMP only)
80 @param queue: name of queue, or None
81 @param jobName: name of job, or None
82 @param walltime: maximum wall clock time for job
83 @param dryrun: Dry run (only print actions that would be taken)?
84 @param doExec: exec the script instead of submitting to batch system?
85 @param mpiexec: options for mpiexec
86 @param submit: command-line options for batch submission (e.g., for qsub, sbatch)
87 @param options: options to append to script header (e.g., #PBS or #SBATCH)
88 @param verbose: produce verbose output?
89 """
90 if (numNodes <= 0 or numProcsPerNode <= 0) and numCores <= 0:
91 raise RuntimeError("Must specify numNodes+numProcs or numCores")
92
93 self.outputDir = outputDir
94 self.numNodes = numNodes
95 self.numProcsPerNode = numProcsPerNode
96 self.numCores = numCores
97 self.queue = queue
98 self.jobName = jobName
99 self.walltime = walltime
100 self.dryrun = dryrun
101 self.doExec = doExec
102 self.mpiexec = mpiexec
103 self.submit = submit
104 self.options = options
105 self.verbose = verbose
106

Member Function Documentation

◆ createScript()

def lsst.ctrl.pool.parallel.Batch.createScript (   self,
  command,
  walltime = None 
)

Create script to be submitted.

    @param command: command to run
    @param walltime: maximum wall clock time, overrides value to constructor
    @return name of script on filesystem

Definition at line 138 of file parallel.py.

138 def createScript(self, command, walltime=None):
139 """!Create script to be submitted
140
141 @param command: command to run
142 @param walltime: maximum wall clock time, overrides value to constructor
143 @return name of script on filesystem
144 """
145 fd, scriptName = tempfile.mkstemp()
146 with os.fdopen(fd, "w") as f:
147 f.write(self.shebang())
148 f.write('\n')
149 f.write(self.preamble(walltime))
150 f.write('\n')
151 f.write(self.execution(command))
152 f.write('\n')
153
154 os.chmod(scriptName, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
155 return scriptName
156

◆ execution()

def lsst.ctrl.pool.parallel.Batch.execution (   self,
  command 
)
Return execution string for script to be submitted

Definition at line 117 of file parallel.py.

117 def execution(self, command):
118 """Return execution string for script to be submitted"""
119 script = [exportEnv(),
120 "umask %03o" % UMASK,
121 "cd %s" % pipes.quote(os.getcwd()),
122 ]
123 if self.verbose:
124 script += ["echo \"mpiexec is at: $(which mpiexec)\"",
125 "ulimit -a",
126 "echo 'umask: ' $(umask)",
127 "eups list -s",
128 "export",
129 "date",
130 ]
131 script += ["mpiexec %s %s" % (self.mpiexec, command)]
132 if self.verbose:
133 script += ["date",
134 "echo Done.",
135 ]
136 return "\n".join(script)
137

◆ preamble()

def lsst.ctrl.pool.parallel.Batch.preamble (   self,
  command,
  walltime = None 
)
Return preamble string for script to be submitted

Most batch systems allow you to embed submission options as comments here.

Reimplemented in lsst.ctrl.pool.parallel.PbsBatch, lsst.ctrl.pool.parallel.SlurmBatch, and lsst.ctrl.pool.parallel.SmpBatch.

Definition at line 110 of file parallel.py.

110 def preamble(self, command, walltime=None):
111 """Return preamble string for script to be submitted
112
113 Most batch systems allow you to embed submission options as comments here.
114 """
115 raise NotImplementedError("Not implemented for base class")
116

◆ run()

def lsst.ctrl.pool.parallel.Batch.run (   self,
  command,
  walltime = None 
)

Run the batch system.

    Creates and submits the script to execute the provided command

    @param command: command to run
    @param walltime: maximum wall clock time, overrides value to constructor
    @return name of script on filesystem

Definition at line 164 of file parallel.py.

164 def run(self, command, walltime=None):
165 """!Run the batch system
166
167 Creates and submits the script to execute the provided command
168
169 @param command: command to run
170 @param walltime: maximum wall clock time, overrides value to constructor
171 @return name of script on filesystem
172 """
173 scriptName = self.createScript(command, walltime=walltime)
174 command = self.submitCommand(scriptName)
175 if self.dryrun:
176 print("Would run: %s" % command)
177 elif self.doExec:
178 os.execl(scriptName, scriptName)
179 else:
180 os.system(command)
181 return scriptName
182
183

◆ shebang()

def lsst.ctrl.pool.parallel.Batch.shebang (   self)

Definition at line 107 of file parallel.py.

107 def shebang(self):
108 return "#!/bin/bash"
109

◆ submitCommand()

def lsst.ctrl.pool.parallel.Batch.submitCommand (   self,
  scriptName 
)

Return command to submit script.

    @param scriptName: name of script on filesystem

Reimplemented in lsst.ctrl.pool.parallel.PbsBatch, lsst.ctrl.pool.parallel.SlurmBatch, and lsst.ctrl.pool.parallel.SmpBatch.

Definition at line 157 of file parallel.py.

157 def submitCommand(self, scriptName):
158 """!Return command to submit script
159
160 @param scriptName: name of script on filesystem
161 """
162 raise NotImplementedError("No implementation for base class")
163

Member Data Documentation

◆ doExec

lsst.ctrl.pool.parallel.Batch.doExec

Definition at line 101 of file parallel.py.

◆ dryrun

lsst.ctrl.pool.parallel.Batch.dryrun

Definition at line 100 of file parallel.py.

◆ jobName

lsst.ctrl.pool.parallel.Batch.jobName

Definition at line 98 of file parallel.py.

◆ mpiexec

lsst.ctrl.pool.parallel.Batch.mpiexec

Definition at line 102 of file parallel.py.

◆ numCores

lsst.ctrl.pool.parallel.Batch.numCores

Definition at line 96 of file parallel.py.

◆ numNodes

lsst.ctrl.pool.parallel.Batch.numNodes

Definition at line 94 of file parallel.py.

◆ numProcsPerNode

lsst.ctrl.pool.parallel.Batch.numProcsPerNode

Definition at line 95 of file parallel.py.

◆ options

lsst.ctrl.pool.parallel.Batch.options

Definition at line 104 of file parallel.py.

◆ outputDir

lsst.ctrl.pool.parallel.Batch.outputDir

Definition at line 93 of file parallel.py.

◆ queue

lsst.ctrl.pool.parallel.Batch.queue

Definition at line 97 of file parallel.py.

◆ submit

lsst.ctrl.pool.parallel.Batch.submit

Definition at line 103 of file parallel.py.

◆ verbose

lsst.ctrl.pool.parallel.Batch.verbose

Definition at line 105 of file parallel.py.

◆ walltime

lsst.ctrl.pool.parallel.Batch.walltime

Definition at line 99 of file parallel.py.


The documentation for this class was generated from the following file: