Project

General

Profile

jobsub_submit_dag

Usage

To see the options, type jobsub_submit_dag -h:

$ jobsub_submit_dag -h 

Usage: jobsub_submit_dag [Client Options] [Server Options] file://user_script 

Provide --group and --jobsub-server to see full help

Options:
  --version             show program's version number and exit

  Client Options:
    -G <Group/Experiment/Subgroup>, --group=<Group/Experiment/Subgroup>
                        Group/Experiment/Subgroup for priorities and
                        accounting
    --role=<VOMS Role>  VOMS Role for priorities and accounting
    --jobsub-server=<JobSub Server>
                        Alternate location of JobSub server to use
    --dropbox-server=<Dropbox Server>
                        Alternate location of Dropbox server to use
    --debug             Print debug messages including server contacted, http
                        response, response time
    --jobid-output-only
                        Return only jobsub jobid in response to a successful
                        submission
    -h, --help          Show this help message and exit

REQUIRED arguments are (--group AND file://[dag_description_file]).   Please
direct questions,  comments, and problems to the service desk

  Server Options:
USER_SCRIPT FORMAT:

  jobsub_submit_dag generates and optionally runs a condor 
  DAG (directed acyclic graph) of condor jobs.  For illustration, suppose
  that you have 5 jobs A,B,C,D,E, that you want to run using condor. 
  Job B requires A to run first, C and D require the output form B, 
  and E requires the input from C and D.
  A graphic representation would be:

                        A
                        |
                        B
                       / \
                      C   D
                       \ /
                        E

  Job A can be submitted to the batch system 
  using the command 
  jobsub_submit file://jobA.sh, job B by jobsub_submit file://jobB.sh, etc.

  The input file for the DAG generator in this example would look like this:

  <serial>
  jobsub_submit file://jobA.sh
  jobsub_submit file://jobB.sh
  </serial>
  <parallel>
  jobsub_submit file://jobC.sh
  jobsub_submit file://jobD.sh
  </parallel>
  <serial>
  jobsub_submit file://jobE.sh
  </serial>

  If this input file is saved as 'user_script', the command to 
  generate and submit a DAG would be

  jobsub_submit_dag [Client Options] [Server Options] file://user_script 

Server Options

-m --maxConcurrent   The maximum number of concurrent jobs that should be run in the DAG

When the command:

jobsub_submit_dag (client_options) file://dag_input_file

is invoked, the dag_input_file is copied to the server and then "dagsub" is executed against it, generating and submitting a DAG.

Jobsub_dag_submit Options Syntax

  • As with jobsub_submit, if --jobsub-server is omitted the submission defaults to the server(s) at https://fifebatch.fnal.gov:8443
  • Do not specify --dropbox-server at this time, the default works and no alternate servers have been set up
  • -G , --role, --debug, and --help all work the same as jobsub_submit

jobsub_server_options in dag_input_file

  • recall that jobsub_submit has 'client options', used to submit the job to the server, and 'server options', which are passed through to jobsub_tools (the 'old' jobsub). If you have used the 'old' jobsub to submit gpsn01, the 'server options' in this document are in fact what you think of as 'jobsub options' in that environment.
  • to see the server options invoke jobsub_submit -h -G <group>

jobsub_server_options in dag_input_file that should not be used

  • -N (number > 1) generates DAGS which run, but which are very fragile. If any of the N concurrent jobs in that DAG node fail, the whole job will fail.
  • A DAG containing DAGS is not currently supported. Any jobsub_submit server option that itself generates a DAG, such as --maxConcurrent or --dag, will cause submission to fail. We plan to support these use cases in the future.
  • any of the jobsub_submit_dag or jobsub_submit client options in the dag_file will cause the job to fail. Do not use -G --group --role --version --json-config --tarball-exclusion-file --dropbox-server --debug --jobid-output-only -h or --help inside the dag_file

Differences between jobsub_submit_dag and dagNabbit.py dag_input_file

  • The syntax of jobsub_submit_dag has deliberately been kept close to that of the jobsub_tools command dagNabbit.py , with changes where necessary.
  • The input file for jobsub_submit_dag must indicate user applications to be transported to the server so that dagNabbit.py can be run successfully. This is done with the file:// directive as is done with jobsub_submit. So a dagNabbit.py input file that looks like this:
<serial>
jobsub [jobsub_options] myFirstJob.sh
</serial>
<parallel>
jobsub [jobsub_options]  mySecondJob.sh
jobsub [jobsub_options]  myOtherJobRunAtSameTimeAsSecondJob.sh
</parallel>
<serial>
jobsub [jobsub_options]  myLastJob.sh
</serial>

Would be changed like this for jobsub_submit_dag:

<serial>
jobsub [jobsub_server_options]  file://myFirstJob.sh
</serial>
<parallel>
jobsub [jobsub_server_options]  file://mySecondJob.sh
jobsub [jobsub_server_options]  file://myOtherJobRunAtSameTimeAsSecondJob.sh
</parallel>
<serial>
jobsub [jobsub_server_options]  file://myLastJob.sh
</serial>

A Real World Example

A Uboone Dag

Further information