client to launch submitit slurm batch processing on HPC
Project description
turboblast
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f04a675d0f429e39b29e43ce74d0248a61d76ccff2167be896c77a052412b46d
|
|
| MD5 |
a846e0d50faa3cf48794573591cb6316
|
|
| BLAKE2b-256 |
5c40d8ef7b517002f4497f2dd411cf2f64262564f364586f07a7b0b790953f43
|
Provenance
The following attestation bundles were made for turboblast-2026.3.9.post4.tar.gz:
Publisher:
cd.yml on umr-lops/turboblast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turboblast-2026.3.9.post4.tar.gz -
Subject digest:
f04a675d0f429e39b29e43ce74d0248a61d76ccff2167be896c77a052412b46d - Sigstore transparency entry: 1066520080
- Sigstore integration time:
-
Permalink:
umr-lops/turboblast@d297f8ef4983409bd50ea9d53fd8f13970680f09 -
Branch / Tag:
refs/tags/2026.3.9.post4 - Owner: https://github.com/umr-lops
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@d297f8ef4983409bd50ea9d53fd8f13970680f09 -
Trigger Event:
release
-
Statement type:
File details
Details for the file turboblast-2026.3.9.post4-py3-none-any.whl.
File metadata
- Download URL: turboblast-2026.3.9.post4-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7336049aa7ecc708f91b5bb0d04abc51cde83686da7c72f0c9bbc7f0384a8546
|
|
| MD5 |
1878b7df7a92143535a77317f88c8a9a
|
|
| BLAKE2b-256 |
494f8d6599900decb5d9fa4e45c42c938572c093d448ba67c1075171218383d2
|
Provenance
The following attestation bundles were made for turboblast-2026.3.9.post4-py3-none-any.whl:
Publisher:
cd.yml on umr-lops/turboblast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turboblast-2026.3.9.post4-py3-none-any.whl -
Subject digest:
7336049aa7ecc708f91b5bb0d04abc51cde83686da7c72f0c9bbc7f0384a8546 - Sigstore transparency entry: 1066520086
- Sigstore integration time:
-
Permalink:
umr-lops/turboblast@d297f8ef4983409bd50ea9d53fd8f13970680f09 -
Branch / Tag:
refs/tags/2026.3.9.post4 - Owner: https://github.com/umr-lops
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cd.yml@d297f8ef4983409bd50ea9d53fd8f13970680f09 -
Trigger Event:
release
-
Statement type: