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.11.tar.gz (9.3 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.11-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: resubmit-0.0.11.tar.gz
  • Upload date:
  • Size: 9.3 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.11.tar.gz
Algorithm Hash digest
SHA256 87c30f3c21204890e6648387e4d812aee08389452b27844b0a3832d993ad9f76
MD5 aa98f20af8edb11baececeadc7505143
BLAKE2b-256 b6c2d945df371dae4aa7554534b5cb986881e7d9b7e28c8aa42df7b50a1affec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: resubmit-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 8.4 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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 2b225978f0bbe70048c2cedfd066d4d24be0d31d62b58caeb188eac68c3f2125
MD5 7575d6bd42ec286d1f51a60d2577829e
BLAKE2b-256 cf60c6df3318a813a6754ebc1fccc76fd0d9cb443ef5056d8b953444a59e18d8

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