Library to coordinate the concurrent evaluation of dynamic ensembles of calculations
Project description
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.
Installation
Install libEnsemble and its dependencies from PyPI using pip:
pip install libensemble
Other install methods are described in the docs.
Basic Usage
Create an Ensemble, then customize it with general settings, simulation and generator parameters, and an exit condition. Run the following via python this_file.py --comms local --nworkers 4:
import numpy as np
from libensemble import Ensemble
from libensemble.gen_funcs.sampling import uniform_random_sample
from libensemble.sim_funcs.six_hump_camel import six_hump_camel
from libensemble.specs import ExitCriteria, GenSpecs, SimSpecs
from libensemble.tools import add_unique_random_streams
if __name__ == "__main__":
sampling = Ensemble(parse_args=True)
sampling.sim_specs = SimSpecs(
sim_f=six_hump_camel,
inputs=["x"],
outputs=[("f", float)],
)
sampling.gen_specs = GenSpecs(
gen_f=uniform_random_sample,
outputs=[("x", float, (2,))],
user={
"gen_batch_size": 500,
"lb": np.array([-3, -2]),
"ub": np.array([3, 2]),
},
)
sampling.persis_info = add_unique_random_streams({}, sampling.nworkers + 1)
sampling.exit_criteria = ExitCriteria(sim_max=101)
sampling.run()
sampling.save_output(__file__)
if sampling.is_manager:
print("Some output data:\n", sampling.H[["x", "f"]][:10])
Resources
Support:
Ask questions or report issues on GitHub.
Email libEnsemble@lists.mcs.anl.gov to request libEnsemble Slack page.
Join the libEnsemble mailing list for updates about new releases.
Further Information:
Documentation is provided by ReadtheDocs.
Contributions to libEnsemble are welcome.
Browse production functions and workflows in the Community Examples repository.
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}
}
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.