Specify dependency on the start or submission of specific jobs

By default, when you establish a dependency on a job to complete successfully, dependent jobs are not submitted until dependencies are satisfied. For example, job124 depends on job 123. Job 123 is submitted, and job 124 is not submitted until job 123 completes.

In some cases, you may have a data preparation job that takes a long time, followed by a computation job. If you have a busy cluster, if your second job gets submitted after the first job has completed, your second job may be waiting a long time in the queue to be scheduled. For these kinds of cases, you can specify to Process Manager to pre-submit dependent jobs, reducing the time a job waits in the queue to be scheduled.

Examples:

  • You want your job to be started as early as possible

For example, you have job 123 followed by job 124. You want job 124 to be submitted as early as possible. In this case, you pre-submit job 124 and specify the Is Submitted dependency. Job 124 will be submitted right after job 123 has been submitted to LSF®.

  • The next job cannot start until the execution host is known for the previous job

For example, job124 needs to run on the same host as the preceding job. You pre-submit job 124 and specify the Starts dependency. Job 124 will be submitted right after job 123 has started to run in LSF.

Requirements to pre-submit dependent jobs

  • Only LSF jobs, job arrays, job scripts, job array scripts, template jobs, proxy job events, and proxy job array events can be pre-submitted.
  • Only jobs, job scripts, job arrays, job array scripts, and template jobs can be preceding jobs to the dependent job to be pre-submitted.
  • The jobs to be pre-submitted must be direct links. They cannot be more than one link away.
  • The dependencies of all predecessors must be logically connected with AND.
  • In Flow Editor, the Event type in the Job Event Definition for the preceding jobs to the other job must be set to Starts or Is Submitted.
  • If you specify dependent jobs to be pre-submitted, and the condition is never met, it is possible for the flow to be “stuck”. To handle this, define an overrun exception handler to kill the last job if it runs or pends for more than a certain period of time.

Examples

Example: Simple flow, pre-submission with "Starts" dependency

In this flow, you can only specify J2 and J4 to pre-submit J5. As a result, J5 will be submitted right after J2 and J4 start to run in LSF.

J1 and J3 cannot be considered because they are more than one link away from J5.

Example: Simple flow, pre-submission with "Is submitted" dependency

In this flow, you can only specify J2 and J4 to pre-submit J5. As a result, J5 will be submitted right after J2 and J4 are submitted to LSF.

J1 and J3 cannot be considered because they are more than one link away from J5.

Example: Pre-submission not possible

In this flow, you cannot specify any pre-submission. This is because jobs must be logically connected with AND.

Example: Complex flow with "Starts" dependency

In this flow, you can only specify J1 to pre-submit J5. As a result, J5 will be submitted right after J1 starts to run in LSF.

J3 and J4 cannot be considered because they are more than one link away from J5, and there is also a logical OR.

How to submit a dependent job after selected jobs start running

Procedure

  1. Draw both the predecessor job and the job that succeeds it.
  2. Change to job dependency mode by clicking the Insert Dependency button.
  3. Draw job dependencies by left-clicking on the job that must run first, then left-clicking on the job that runs next.
  4. To change the type of dependency, right-click on the dependency line and select Open Definition.

    The Event Definition dialog box is displayed.

  5. In the Event Type field, select Starts.
  6. Click OK.
  7. Double-click the dependent job that depends on other jobs to start.

    The Job Definition dialog is displayed.

  8. Select the Advanced tab.
  9. In the Pre-submit section, select jobs from the Available column and click the Add button to put them in the Selected column.

    The current job will be submitted right after the selected jobs start running in LSF.

How to submit a dependent job after selected jobs are submitted

Procedure

  1. Draw both the predecessor job and the job that succeeds it.
  2. Change to job dependency mode by clicking the Insert Dependency button.
  3. Draw job dependencies by left-clicking on the job that must run first, then left-clicking on the job that runs next.
  4. To change the type of dependency, right-click on the dependency line and select Open Definition.

    The Event Definition dialog box is displayed.

  5. In the Event Type field, select Is Submitted.
  6. Click OK.
  7. Double-click the dependent job that depends on other jobs to start.

    The Job Definition dialog is displayed.

  8. Select the Advanced tab.
  9. In the Pre-submit section, select jobs from the Available column and click the Add button to put them in the Selected column.

    The current job will be submitted right after the selected jobs are submitted to LSF.