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.1

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.1
File Size Uploaded Provenance Actions
libpipe-0.9.1.tar.gz 34.8 kB Without provenance Details for libpipe-0.9.1.tar.gz

Built distribution (wheel)

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

Total release size: 71.9 kB

Release files / libpipe-0.9.1.tar.gz

Download URL libpipe-0.9.1.tar.gz
Size 34.8 kB
Tags Source
SHA-256 checksum
How to use checksums
d8821b8d54c1aa8f546a2df80d3f51367d9087c4d84c55601b1871a953fe87c6
BLAKE2b-256 checksum
How to use checksums
9a4e55366c4a24ab2d07b0639586e86ec8b8f328750f3f891167abb09792b6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.2 CPython/3.10.14 Linux/7.0.0-38-generic

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

Download URL libpipe-0.9.1-py3-none-any.whl
Size 37.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2bb4f11fecff79b333105fbce959f86ae6faec6bdabee41f8456c64097dcda8
BLAKE2b-256 checksum
How to use checksums
2caeb277ba5fc0e33b2db2672bbec278eda589c19dab731b00deabad93658299
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.2 CPython/3.10.14 Linux/7.0.0-38-generic

Security for libpipe 0.9.1

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