An adaptive and highly asynchronous ensemble simulation workflow manager MatEnsemble (https://github.com/Q-CAD/MatEnsemble) built jointly on top of the hierarchical graph based scheduler FLUX and concurrent-futures infrastructure of python
Project description
MatEnsemble
MatEnsemble is a Python library for high-throughput workflows on HPC systems. You define a directed acyclic graph (DAG) of chores—Python callables or executable commands—and MatEnsemble submits work through Flux, tracks completions, adapts scheduling to free CPUs and GPUs, and writes structured logs and per-chore output directories.
Here is an example which defines a simple MPI chore, adds ten independent instances of it to a pipeline, and submits the workflow.
pipe = Pipeline()
# register a function the MatEnsemble
@pipe.chore(num_tasks=10, cores_per_task=1, gpus_per_task=0, mpi=True)
def mpi_hello_world():
size = MPI.COMM_WORLD.Get_size()
rank = MPI.COMM_WORLD.Get_rank()
name = MPI.Get_processor_name()
print(f"Hello World! I am process {rank} of {size} on {name}.")
# adding 10 mpi_hello_world chores to the pipeline
for _ in range(10):
mpi_hello_world()
pipe.submit(log_delay=1)
Rather than launching the MPI jobs directly, you describe the work declaratively with the @pipe.chore decorator and enqueue each invocation. MatEnsemble then schedules the chores through Flux, allocating the requested resources (num_tasks, CPU cores, GPUs, and MPI support) for each job.
Installation
If you are trying to use MatEnsemble on the Frontier, Pathfinder or Perlmutter super computers then you can quickly install MatEnsemble with our install script:
curl -fsSL https://raw.githubusercontent.com/FredDude2004/MatEnsemble/refs/heads/main/install.sh | bash
For more general installation see our documentation
Related
- Flux documentation
- Flux Python guide
- Slurm documentation (common front-end to batch allocations)
- LAMMPS manual (often used alongside ensemble MD workflows)
License
BSD 3-Clause. See LICENSE.
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 matensemble-0.5.2.tar.gz.
File metadata
- Download URL: matensemble-0.5.2.tar.gz
- Upload date:
- Size: 63.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea4a98c0010149272213300c1f115a91c29ffb173e4a11fd9915b36ed6f89a8b
|
|
| MD5 |
03426e49a7d18974d346551781a0d153
|
|
| BLAKE2b-256 |
7796f7aab9a519a69e935059da8675a6917c5f5cbce751aa95552e3435cc178f
|
File details
Details for the file matensemble-0.5.2-py3-none-any.whl.
File metadata
- Download URL: matensemble-0.5.2-py3-none-any.whl
- Upload date:
- Size: 80.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b642bfb36d96f1179bd10b433280d111c1ddf25799e2b4412f07ecb1f5d0b6c2
|
|
| MD5 |
8c18ec4606104938b746fae1a141d3f4
|
|
| BLAKE2b-256 |
2ce56ee775dd95472083203e54e09de287b8b02a1ba2d6213843181726482b3e
|