Almost all science and engineering applications eventually stop scaling: their runtime no longer decreases as available computational resources increase. Therefore, many applications will struggle to efficiently use emerging extreme-scale high-performance, parallel, and distributed systems. libEnsemble is a complete Python toolkit and workflow system for intelligently driving ensembles of experiments or simulations at massive scales. It enables and encourages multidisciplinary design, decision, and inference studies portably running on laptops, clusters, and supercomputers.
Statement of NeedWhile a growing number of packages are aimed at workflows, relatively few focus on running dynamic ensembles of calculations on clusters and supercomputers. Dynamic ensembles are workflows of computations that are defined and steered based on intermediate results. Examples include determining simulation parameters using numerical optimization methods, machine learning techniques, or statistical calibration tools. In each of these examples, the ensemble members are typically simulations that use different parameters or data. Additional examples of applications that have used libEnsemble are surveyed in the Representative libEnsemble Use Cases section below.The target audience for libEnsemble includes scientists, engineers, and other researchers who stand to benefit from such dynamic workflows.