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.7.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.7-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: resubmit-0.0.7.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.7.tar.gz
Algorithm Hash digest
SHA256 c210cb146b6246f3ef3c30f2b328d12dbd8889a0d12e147cca715c97fdf291b6
MD5 f2d01210d698dd177784101b9a227811
BLAKE2b-256 ceb25655b04e4ed4419a434094dd9efc84545ce901e7af551f8a52a43f5055d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: resubmit-0.0.7-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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 4da7622592bf2086cc5b4edebcb9b28ae8d9df98ba6d084e392b15b98c6d7b13
MD5 8e70f9214b818e01978fbf4dce317707
BLAKE2b-256 7b0bd3bfa41a5e51ec467c9b3ce29740a5f3551f536744860d00634c22a975b9

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