Skip to main content

Libpipe

Common pipeline framework and library

Installation

libpipe can be installed via pip:

$ pip install libpipe

and requires Python 3.10 or higher.

Worker pools on a Slurm cluster

A WorkerPool runs its tasks locally, on other hosts over SSH, or through Slurm with the host slurm: each task is then started with srun, as a job of its own when the pool runs on a login node, as a job step inside an allocation (salloc, sbatch).

pool = worker.WorkerPool(['slurm'], name='Imaging', max_tasks_per_worker=8,
                         slurm_options='-p regular --mem=200G --time=24:00:00')

max_tasks_per_worker is the number of jobs in flight. The srun options (partition, account, resources) come from slurm_options, or from the LIBPIPE_SLURM_OPTIONS environment variable; max_time becomes the job time limit when the options set none. Host constraints (run_on_host) do not apply: Slurm places the tasks, so the data must be on a file system shared with the compute nodes.

With slurm_nodes, a pool on a login node requests one allocation of up to that many nodes when its first task starts, runs each task as a job step in it (srun --jobid --exact), and releases it at the end, or after 10 minutes without step. Slurm packs the steps on the nodes from their CPUs and memory, given by the category of the task; a step starts when the allocation has its CPUs free, so that no srun waits polling the controller:

pool = worker.WorkerPool(['slurm'], name='Cubes', slurm_nodes=4,
                         resources={'heavy': {'cpus': 12, 'mem': '40GB'}})
pool.add('pstool gen_vis_cube ...', category='small', label='gen_vis_cube')

The categories (DEFAULT_RESOURCES) are small (1 CPU, 2 GB), medium (4, 8 GB), high_mem (2, 16 GB), cpu (12, 8 GB) and heavy (12, 40 GB, the default), the others capped at heavy; a step also gets the matching OMP_NUM_THREADS. The options apply to the jobs and the allocation, not to the steps. Inside an allocation started by hand, the tasks are job steps with these resources as well.

Slurm does not necessarily limit the memory of a job step: the memory of a category must stay above the peak memory of its tasks. The local and Slurm pools measure each task (wall time, CPU time, peak RSS, in its log file), and WorkerPoolReport.usage_lines() summarises them per task type (label).

Metadata

Release files for libpipe 0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for libpipe 0.9
File Size Uploaded Provenance Actions
libpipe-0.9.tar.gz 34.6 kB Without provenance Details for libpipe-0.9.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for libpipe 0.9
File Interpreter ABI Platform Actions
libpipe-0.9-py3-none-any.whl Python 3 none any Details for libpipe-0.9-py3-none-any.whl

Total release size: 71.5 kB

Release files / libpipe-0.9.tar.gz

Download URL libpipe-0.9.tar.gz
Size 34.6 kB
Tags Source
SHA-256 checksum
How to use checksums
08d4009d925afd1aa871eec28251e40890f3fa347a48713970b6b1f1b69989b2
BLAKE2b-256 checksum
How to use checksums
626fc03bb489ba36dd1a3bbb9f26c0d3293d71735776b9cebc48f3087178aed1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.14.4 Linux/7.0.0-38-generic

Release files / libpipe-0.9-py3-none-any.whl

Download URL libpipe-0.9-py3-none-any.whl
Size 36.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f5e1f1a1f1fdbc96c7e91cc2a70f58477294b8e055406eb4dd7f8cfd64b4d7ed
BLAKE2b-256 checksum
How to use checksums
6838dcbcc1d58aa29a179dfdd0adc63c60b25bccfb983e63ab8bab7d4000a2e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.14.4 Linux/7.0.0-38-generic

Security for libpipe 0.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page