Skip to main content

client to launch submitit slurm batch processing on HPC

Project description

turboblast

turboblast logo

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: turboblast-2026.3.9.post4.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.post4.tar.gz
Algorithm Hash digest
SHA256 f04a675d0f429e39b29e43ce74d0248a61d76ccff2167be896c77a052412b46d
MD5 a846e0d50faa3cf48794573591cb6316
BLAKE2b-256 5c40d8ef7b517002f4497f2dd411cf2f64262564f364586f07a7b0b790953f43

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboblast-2026.3.9.post4.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.post4-py3-none-any.whl.

File metadata

File hashes

Hashes for turboblast-2026.3.9.post4-py3-none-any.whl
Algorithm Hash digest
SHA256 7336049aa7ecc708f91b5bb0d04abc51cde83686da7c72f0c9bbc7f0384a8546
MD5 1878b7df7a92143535a77317f88c8a9a
BLAKE2b-256 494f8d6599900decb5d9fa4e45c42c938572c093d448ba67c1075171218383d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for turboblast-2026.3.9.post4-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