Runtime and HPC Development Guide¶
ABI supports four execution engines. They all consume the same compiled plan; the difference is where and how each step runs.
Engine |
Implementation |
Typical use |
|---|---|---|
|
|
One host, direct subprocess execution |
|
|
Nextflow DSL2 on a workstation, cluster, or cloud |
|
|
Snakemake with marker-file completion and optional Conda |
|
|
ABI-native Slurm/PBS submission and polling |
abi plan writes execution_plan.json and compiled_plan.json without choosing a backend.
The engine is selected later with abi run --engine.
Preflight¶
Run a side-effect-free check for the intended engine before submission:
abi check \
--type rnaseq_expression \
--config config.yaml \
--sample-sheet samples.tsv \
--engine hpc
This checks plugin inputs and resources and, unless --no-check-runtime is used,
the required runtime executables. A successful preflight does not prove that
cluster nodes can see the same paths; verify shared storage, modules/Conda
environments, and scheduler account policy separately.
Nextflow¶
Export a standalone DSL2 file:
abi export-nextflow \
--type rnaseq_expression \
--config config.yaml \
--sample-sheet samples.tsv \
--output workflow.nf
nextflow run workflow.nf -resume
Or let ABI export and launch it:
abi run \
--type rnaseq_expression \
--engine nextflow \
--config config.yaml \
--sample-sheet samples.tsv \
--workflow workflow.nf \
--work-dir work/nextflow \
--nextflow-profile slurm \
--resume \
--confirm-execution
Relevant options include --nextflow-bin, --nextflow-profile, --executor,
--nxf-home, and --work-dir.
Snakemake¶
Export a standalone Snakefile:
abi export-snakemake \
--type rnaseq_expression \
--config config.yaml \
--sample-sheet samples.tsv \
--output Snakefile
snakemake --snakefile Snakefile --cores 8 --use-conda
Or execute through ABI:
abi run \
--type rnaseq_expression \
--engine snakemake \
--config config.yaml \
--sample-sheet samples.tsv \
--workflow Snakefile \
--confirm-execution
ABI invokes Snakemake with --rerun-incomplete and writes provenance on
success and failure. Marker files represent completed rules; do not treat the
presence of a work directory alone as successful completion. The generic CLI
accepts --resume, but the current Snakemake backend does not add a separate
Snakemake resume flag.
Native Slurm/PBS¶
abi run \
--type rnaseq_expression \
--engine hpc \
--scheduler slurm \
--partition production \
--account project_abi \
--qos normal \
--config config.yaml \
--sample-sheet samples.tsv \
--resource-profile hpc_standard \
--hpc-timeout 86400 \
--poll-interval 30 \
--resume \
--confirm-execution
The native runtime creates payload and scheduler scripts for worker-scoped steps, submits dependency-linked jobs, polls the scheduler, records job IDs and atomic step results, and cancels timed-out work. Slurm has the primary production validation surface. PBS is supported for compatible directives and dependency submission but should be accepted against the target cluster before production use.
Resource choices can come from step contracts, a profile
(dev_small, hpc_standard, hpc_large), or command-line overrides:
--cpu 16 --memory 64GB --walltime 08:00:00 --accelerator gpu:v100:1
Container overrides are also available:
--container-image ghcr.io/example/abi-rnaseq:1.5.7.1 \
--container-runtime apptainer
Supported runtime names are docker, podman, singularity, and apptainer.
The container image still needs access to input, output, and resource paths.
Conda and resources¶
environments.yaml is the tool-to-environment source of truth. The current
plugin assignments are:
Plugin |
Declared environments |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
Set ABI_MAMBA_ROOT or pass --mamba-root to select a shared environment
root. Use abi check-resources for read-only diagnosis and
abi setup-resources --dry-run before any confirmed setup.
The managed cloud release layout and strict certification process are defined
in Release-ready runtime locks. Do not interchange the
top-level ABI_RUNTIME_RESOURCE_ROOT used by runtime locks with the legacy
plasmid database meaning of ABI_RESOURCE_ROOT.
Acceptance checklist¶
Before calling a cluster deployment production-ready:
Run strict contract lint for the affected plugin.
Validate input and resource visibility from a compute node, not only the login node.
Export and inspect the selected workflow representation.
Run a small
--smokejob with the same scheduler/profile/container path.Test failure, timeout, cancellation, and
--resume.Verify standard tables, provenance, checksums, report limitations, and scheduler IDs.
Capture a strict runtime lock for the release scope.
See the production manual acceptance checklist for the full set of local and HPC gates.