/libensemble

A Python toolkit for coordinating asynchronous and dynamic ensembles of calculations.

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

libEnsemble


https://img.shields.io/pypi/v/libensemble.svg?color=blue https://img.shields.io/conda/v/conda-forge/libensemble?color=blue https://img.shields.io/spack/v/py-libensemble?color=blue

https://github.com/Libensemble/libensemble/actions/workflows/ci.yml/badge.svg?branch=develop https://coveralls.io/repos/github/Libensemble/libensemble/badge.svg?branch=main Documentation Status Code style: black

libEnsemble: A complete toolkit for dynamic ensembles of calculations

Adaptive, portable, and scalable software for connecting "deciders" to experiments or simulations.

  • Dynamic ensembles: Generate parallel tasks on-the-fly based on previous computations.
  • Extreme portability and scaling: Run on or across laptops, clusters, and leadership-class machines.
  • Heterogeneous computing: Dynamically and portably assign CPUs, GPUs, or multiple nodes.
  • Application monitoring: Ensemble members can run, monitor, and cancel apps.
  • Data-flow between tasks: Running ensemble members can send and receive data.
  • Low start-up cost: No additional background services or processes required.

libEnsemble is effective at solving design, decision, and inference problems on parallel resources.

Quickstart

Installation

Install libEnsemble and its dependencies from PyPI using pip:

pip install libensemble

Other install methods are described in the docs.

Resources

Support:

Further Information:

Cite libEnsemble:

@article{Hudson2022,
  title   = {{libEnsemble}: A Library to Coordinate the Concurrent
             Evaluation of Dynamic Ensembles of Calculations},
  author  = {Stephen Hudson and Jeffrey Larson and John-Luke Navarro and Stefan M. Wild},
  journal = {{IEEE} Transactions on Parallel and Distributed Systems},
  volume  = {33},
  number  = {4},
  pages   = {977--988},
  year    = {2022},
  doi     = {10.1109/tpds.2021.3082815}
}