- Table of contents
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
-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>