A selection of libEnsemble functions and complete workflows from the community. Many previously built-in libEnsemble examples have been moved here for easier discoverability.
More information about each of these can be found in the various READMEs
and the test_*.py
Python calling scripts.
Each of the Optimization Generator Function examples is tested regularly on GitHub Actions and has API documentation available online.
-
Optimization Generator Function
VTMOP is a Fortran 2008 package containing a robust, portable solver and a flexible framework for solving MOPs. Designed for efficiency and scalability to an arbitrary number of objectives, VTMOP attempts to generate uniformly spaced points on a (possibly nonconvex) Pareto front with minimal cost function evaluations.
Chang, T.H., Larson, J., Watson, L.T., and Lux, T.C.H. Managing computationally expensive blackbox multiobjective optimization problems with libEnsemble. In Proc. 2020 Spring Simulation Conference (SpringSim '20), Article No. 31, pp. 1–12. DOI: 10.22360/springsim.2020.hpc.001
Originally included in libEnsemble v0.8.0. See here.
-
Complete Workflow
A complete Molecular-Dynamics / Machine-Learning adaptive simulation loop based on DeepDriveMD. The simulation function runs molecular-dynamics evaluations using DeepDriveMD's
run_openmm.py
, while the persistent generator function runs the remaining machine-learning training and model selection operations on the output. The generator parameterizes subsequent MD runs by selecting outlier points. Seeddmd/readme.md
for more information. Constructed by the libEnsemble team as a proof-of-concept with help from the DeepDriveMD team.Originally included in libEnsemble v0.8.0. See here.
-
Optimization Generator Function
A persistent generator function that interfaces with the DEAP, evolutionary algorithms as generator functions. This example demonstrates the NSGA-II multi-objective optimization strategy. The generator evaluates the "fitness" of current population members and requests their evaluation from libEnsemble's manager. The manager returns corresponding "fitness values" for each objective.
Last included in libEnsemble v0.8.0. See here.
-
Complete Workflow
A generator-less workflow used to train a selection of neural network architectures on ALCF's Theta. An initial History array of hyperparameters are read from
test_training_args.npz
and provided to libEnsemble for distribution and evaluation by worker processes. Seernn/description.pdf
for more information about the included files. -
Complete Workflow
A ParMOO persistent generator function is used to solve a biobjective accelerator emittance minimization problem, while exploiting problem structure. This directory contains sample-solvers for multiobjective optimization of particle accelerator setup by using either ParMOO inside libE or libE inside of ParMOO. Note that both methods produce equivalent results. See the
parmoo-emittance/README.rst
for more details, as well as detailed usage instructions and references. -
Generator and Allocator Functions
Four generator functions, a matching allocator function, a consensus-subroutines module, a handful of test simulation functions, and tests for each. All created by Caleb Ju at ANL as Given's associate Summer 2021. See the docstrings in each of the modules for more information.
Last included in libEnsemble v0.9.3. See here.
-
Scripts for workflow - requires external data files
Ensembles of ice-flow simulations using GPUs.
James Chegwidden, and Kuang Hsu Wang (ANL/UND in Summer 2022). External Supervisor: Prof. Anjali Sandip (UND).
-
Complete Workflows
heFFTe is a fast Fourier transform code that is used in many applications and supports heterogeneous hardware. The
heffte
subdirectory contains a simple example of libEnsemble launching heFFTe'sspeed3d_c2c
at various predetermined configurations.ytopt is a Bayesian Optimization package for determining optimal input parameter configurations for applications or other executables. The
ytopt_heffte
subdirectory contains theytopt_asktell
generator function for providing runtime results to ytopt and prompting it for subsequent parameter configurations and atest_ytopt_heffte.py
script for coupling ytopt to heFFTe application instances (launched withytopt_obj.py
) via libEnsemble. -
Optimization Generator Function
A generator function for Bayesian optimization with a Gaussian process. Currently requires
ax-platform<=0.4.0
Optimization Generator Function
Another generator function for Bayesian optimization with a Gaussian process, using dragonfly
. Previous
working versions of the included test required the following fork: https://github.com/jlnav/dragonfly
,
since upstream no longer appears under active development.