Here's a table comparing external sub-DAGs and splices. Note that the bold entries are the ones that are advantageous for a given feature. | *Feature* | *External sub-DAGs* | *Splices* | *Notes* | -| Incorporate separate DAG files | *yes* | *yes* | | -| Rescue DAGs | *yes* | *yes* | | -| DAGMan recovery | *yes* | *yes* | | -| Multiple DAGMan instances | yes | *no* | | -| Possible combinatorial explosion of dependencies | *no* | yes | Until we implement socket nodes for splices | -| Dynamic creation of sub-workflows | *yes* | no | | -| PRE/POST scripts on sub-workflows | *yes* | no | Until we implement socket nodes for splices | -| Retries of sub-workflows | *yes* | no | | -| Workflow-wide throttling | no | *yes* | | -| Per-sub-workflow throttling | yes | no | | -| Workflow-wide node categories | no | *yes* | | -| Node priorities on sub-workflows | *yes* | no | | -| Reduce memory footprint of large workflows | *yes?* | no | If used properly | -| Per-sub-workflow file final nodes | *yes* | no | | -| Abort sub-workflows individually | *yes* | no | | -| Variables associated with sub-workflows | *yes* | no | | -| Separate configuration for sub-workflows | yes | no | Can be good or bad | -| One node status file, etc., for entire workflow | no | *yes* | | +| Ability to incorporate separate sub-workflow files | *yes* | *yes* | | +| Rescue DAG(s) created upon failure | *yes* | *yes* | | +| DAG recovery (e.g., from submit machine crash) | *yes* | *yes* | | +| Creates multiple DAGMan instances in the queue | yes | *no* | | +| Possible combinatorial explosion of dependencies (see below) | *no* | yes | Until we implement socket nodes for splices | +| Sub-workflow files must exist at submission | *no* | yes | | +| PRE/POST scripts allowed on sub-workflows | *yes* | no | Until we implement socket nodes for splices | +| Ability to retry sub-workflows | *yes* | no | | +| Job/script throttling applies across entire workflow | no | *yes* | | +| Separate job/script throttles for each sub-workflow | yes | no | | +| Node categories can apply across entire workflow | no | *yes* | | +| Ability to set priority on sub-workflows as nodes | *yes* | no | | +| Ability to reduce workflow memory footprint | *yes?* | no | If used properly | +| Ability to have separate final nodes in sub-workflows | *yes* | no | | +| Ability to abort sub-workflows individually | *yes* | no | | +| Ability to associate variables associated with sub-workflows | *yes* | no | | +| Ability to configure sub-workflows individually | yes | no | Can be good or bad | +| Separate node status files, etc., for sub-workflows | yes | *no* | | + *Should I use external sub-DAGs or splices?*