Skip to main content

client to launch submitit slurm batch processing on HPC

Project description

turboblast

Actions Status Documentation Status

PyPI version Conda-Forge PyPI platforms

GitHub Discussion

Coverage

Purpose

turboblast is a Python library for submitting high-throughput job arrays to a Slurm cluster using submitit. It is designed for workflows where you have a large list of command-line tasks (e.g. processing satellite files) that need to be distributed across many compute nodes in parallel.

The core idea is simple: you provide a text file where each line is a set of arguments, and turboblast dispatches each line as an independent Slurm task running a bash script of your choice. Large input lists are automatically split into chunks of 1000 to stay within Slurm array limits.

Dependencies

Package Role
submitit Submits and monitors Slurm job arrays from Python
Python ≥ 3.10 Required runtime

Installation

pip install turboblast

Or with conda:

conda install -c conda-forge turboblast

Usage

Prepare your inputs

Create a plain text file where each line contains the arguments for one task:

# inputs.txt
--input /data/file_001.nc --output /results/
--input /data/file_002.nc --output /results/
--input /data/file_003.nc --output /results/

Write your bash script

turboblast will call bash your_script.sh <args> for each line. Example:

#!/bin/bash
# process.sh
python my_processor.py "$@"

Submit the job array

turboblaster \
  --listing-input inputs.txt \
  --bash-slurm-exec process.sh \
  --slurm-partition gpu \
  --timeout-min 60 \
  --mem-gb 8 \
  --cpus-per-task 4 \
  --slurm-array-parallelism 50 \
  --output-dir submitit_logs

Full CLI reference

usage: turboblaster [-h] [--num-tasks NUM_TASKS] [--timeout-min TIMEOUT_MIN]
                    [--mem-gb MEM_GB] [--cpus-per-task CPUS_PER_TASK]
                    [--slurm-partition SLURM_PARTITION]
                    --listing-input LISTING_INPUT
                    --bash-slurm-exec BASH_SLURM_EXEC
                    [--output-dir OUTPUT_DIR]
                    [--slurm-array-parallelism SLURM_ARRAY_PARALLELISM]

options:
  --listing-input            Path to a file containing input lines (one task per line) [required]
  --bash-slurm-exec          Path to the bash script to execute for each task [required]
  --num-tasks                Number of tasks (unused if reading from file) [default: 20]
  --timeout-min              Timeout in minutes for each task [default: 20]
  --mem-gb                   Memory in GB for each task [default: 2]
  --cpus-per-task            Number of CPUs per task [default: 1]
  --slurm-partition          Slurm partition to use [default: cpu]
  --output-dir               Directory to store submitit logs [default: submitit_logs_array]
  --slurm-array-parallelism  Max number of tasks running concurrently [default: 20]

Submitit logs (.out / .err files) are written to a timestamped subdirectory under --output-dir:

submitit_logs/
└── 20260309T143000/
    ├── 12345_0_0.out
    ├── 12345_1_0.out
    └── ...

Monitor a specific task with:

tail -f submitit_logs/20260309T143000/12345_0_0.out

Project structure

turboblast/
├── src/
│   └── turboblast/
│       ├── __init__.py       # Package entry point, exposes __version__
│       ├── blaster.py        # Core logic: argument parsing, job submission, task execution
│       └── logo.py           # ASCII art logo used in the CLI help message
├── tests/
│   ├── test_package.py       # Package metadata tests (version check)
│   └── test_blaster.py       # Unit tests for blaster.py
├── pyproject.toml            # Build config, dependencies, tool settings
└── README.md

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

turboblast-2026.3.9.post3.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

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

turboblast-2026.3.9.post3-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file turboblast-2026.3.9.post3.tar.gz.

File metadata

  • Download URL: turboblast-2026.3.9.post3.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for turboblast-2026.3.9.post3.tar.gz
Algorithm Hash digest
SHA256 ebd4ea5f4a78a0915371862423c5deafde4e5d1fdce337add9a0036a6a5ce481
MD5 377d54c9aa3c326ab452893856187d8d
BLAKE2b-256 8c63bd80ca0d2ac1d4e5da13e59ee1eb9e553344167f80f1634d61c3ab465a25

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboblast-2026.3.9.post3.tar.gz:

Publisher: cd.yml on umr-lops/turboblast

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turboblast-2026.3.9.post3-py3-none-any.whl.

File metadata

File hashes

Hashes for turboblast-2026.3.9.post3-py3-none-any.whl
Algorithm Hash digest
SHA256 0863a5252bd60995237914fac70b2c17e595d4f1f9223bba527321339f32232c
MD5 b53ef800d41cdef73fa1f8b5ee96a9e2
BLAKE2b-256 7313bbfc517c156d7b8d68469cf408e9ad1c3393ffdf391dfbccb9678d8f2e77

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboblast-2026.3.9.post3-py3-none-any.whl:

Publisher: cd.yml on umr-lops/turboblast

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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