Skip to main content

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

PyPI version Documentation Python License

MatEnsemble

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

License

BSD 3-Clause. See LICENSE.

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

matensemble-0.5.2.tar.gz (63.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

matensemble-0.5.2-py3-none-any.whl (80.1 kB view details)

Uploaded Python 3

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

Hashes for matensemble-0.5.2.tar.gz
Algorithm Hash digest
SHA256 ea4a98c0010149272213300c1f115a91c29ffb173e4a11fd9915b36ed6f89a8b
MD5 03426e49a7d18974d346551781a0d153
BLAKE2b-256 7796f7aab9a519a69e935059da8675a6917c5f5cbce751aa95552e3435cc178f

See more details on using hashes here.

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

Hashes for matensemble-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b642bfb36d96f1179bd10b433280d111c1ddf25799e2b4412f07ecb1f5d0b6c2
MD5 8c18ec4606104938b746fae1a141d3f4
BLAKE2b-256 2ce56ee775dd95472083203e54e09de287b8b02a1ba2d6213843181726482b3e

See more details on using hashes here.

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