Submitters

BOUT Runners makes it possible to manage runs locally, or to submit runs on a cluster. A submitter factory therefore implements the method get_submitter() which automatically detects whether or not the python program has been executed on a cluster. If no cluster is found all jobs will be submitted as LocalSubmitters. If a cluster is found the jobs will be submitted to the cluster.

Default parameters for the jobs can be set in submitters.ini (the path to this file can be set with the bout_runners_config executable).

LocalSubmitter

If a job is submitted with a LocalSubmitter, the BoutRunner object will submit all nodes which does not have any dependencies (i.e. other nodes with edges pointing to the node under consideration) in parallel using the subprocess module. It will then monitor the runs and submit subsequent nodes only when all nodes at the current order has finished.

Cluster submitters

Currently only the PBSSubmitter and SLURMSubmitter is implemented. As PBS and SLURM has their own way of handling dependencies between jobs BoutRunner will defer the job to the cluster schedulers.

Note

Clusters will usually reject jobs that state they depend on jobs that have already finished. Therefore, any job submitted using submitter.submit_command(command) will onlye be released to the cluster when submitter.release() is called. This is taken care of if you use BoutRunner.run().