Skip to main content

Small wrapper around submitit to simplify cluster submissions

Project description

resubmit

Small utility library to simplify job submission with Submitit on SLURM clusters.

Quick usage:

  • Install locally for development:
pip install -e .[debug]
  • Use in your project:
from resubmit import submit_jobs, maybe_attach_debugger

# attach remote debugger if requested
maybe_attach_debugger(args.get("port", None))

# submit jobs (list of dicts)
submit_jobs(jobs_list, my_entrypoint, timeout_min=60, block=True)

API

submit_jobs(...) 🔧

Submit multiple jobs to a Slurm cluster using Submitit.

Signature (short):

submit_jobs(jobs_args: Iterable[dict], func: Callable[[List[dict]], Any], *, timeout_min: int, cpus_per_task: int = 16, mem_gb: int = 64, num_gpus: int = 1, account: Optional[str] = None, folder: str = "logs/%j", block: bool = False, prompt: bool = True, local_run: bool = False, slurm_additional_parameters: Optional[Dict] = None, constraint: Optional[str] = None, reservation: Optional[str] = None)

  • jobs_args: iterable of per-job kwargs (each item is passed to func).
  • func: entrypoint called for each job (should accept a list or single job dict depending on your usage).
  • timeout_min, cpus_per_task, mem_gb, num_gpus: common Slurm resources.
  • account: optional Slurm account name.
  • folder: logs folder for Submitit files (supports %j for job id).
  • block: if True, waits for all jobs and returns results.
  • prompt: if True, asks for confirmation interactively; set to False for CI or tests.
  • local_run: run the jobs locally without Submitit (useful for debugging).
  • slurm_additional_parameters: pass any extra Slurm key/value pairs to Submitit.
  • constraint / reservation: cluster-specific options kept out of defaults — provide them explicitly if you need them (they take precedence over values in slurm_additional_parameters).

Example:

submit_jobs(
    jobs_list,
    my_entrypoint,
    timeout_min=60,
    num_gpus=2,
    prompt=False,
    constraint="gpu",
)

maybe_attach_debugger(port: Optional[int]) 🐞

Attach debugpy to the job when port is provided (> 0). Safe no-op if port is None or <= 0.

  • If debugpy (and submitit) are not available on the node, a RuntimeError is raised with an explanatory message.

Example:

# attach remote debugger only when a port is provided (e.g., from CLI args)
maybe_attach_debugger(args.get("port"))

Tips:

  • Use prompt=False when calling submit_jobs from scripts or CI to avoid interactive prompts.
  • Tests demonstrate non-interactive behavior (prompt=False) and optional constraint/reservation handling.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

resubmit-0.0.6.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

resubmit-0.0.6-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file resubmit-0.0.6.tar.gz.

File metadata

  • Download URL: resubmit-0.0.6.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for resubmit-0.0.6.tar.gz
Algorithm Hash digest
SHA256 b481b2bf62a957af093f0fa8aae6e8186c4d2de1726aac1e701543e2f63a4f9c
MD5 dda3fe673c32a3efb7044f0503362233
BLAKE2b-256 357ad26bad5198e513b66fde47c26a819cad3f8e6b4a34590d356b81f74a2349

See more details on using hashes here.

File details

Details for the file resubmit-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: resubmit-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for resubmit-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a6c7514722e328051f7cdc3630caf39dea4ecb13ef4c51967ddf7a7b38979d0d
MD5 d17975daf3735e2b8a061c20ab731f49
BLAKE2b-256 2ff88aacc3d3ad870cdf07a7c1aa7da49df99692b0a2853ffd606752b64bea37

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page