Metadata-Version: 2.4
Name: ensemble_launcher
Version: 0.1.0
Summary: A lightweight, scalable tool for launching and orchestrating task ensembles across HPC clusters.
Author: Hari Tummalapalli
License: BSD-3-Clause
Project-URL: Homepage, https://github.com/argonne-lcf/ensemble_launcher
Project-URL: Documentation, https://argonne-lcf.github.io/ensemble_launcher
Project-URL: Repository, https://github.com/argonne-lcf/ensemble_launcher
Project-URL: Issues, https://github.com/argonne-lcf/ensemble_launcher/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: cloudpickle
Requires-Dist: pydantic
Requires-Dist: pyzmq
Requires-Dist: loky
Requires-Dist: typer
Provides-Extra: hpc
Requires-Dist: mpi4py; extra == "hpc"
Provides-Extra: mcp
Requires-Dist: mcp; extra == "mcp"
Requires-Dist: paramiko; extra == "mcp"
Provides-Extra: inference
Requires-Dist: vllm; extra == "inference"
Requires-Dist: uvloop; extra == "inference"
Requires-Dist: uvicorn; extra == "inference"
Requires-Dist: fastapi; extra == "inference"
Provides-Extra: docs
Requires-Dist: mkdocs-material; extra == "docs"
Provides-Extra: dev-core
Requires-Dist: pytest; extra == "dev-core"
Requires-Dist: pytest-timeout; extra == "dev-core"
Requires-Dist: pytest-asyncio; extra == "dev-core"
Requires-Dist: ensemble_launcher[hpc]; extra == "dev-core"
Provides-Extra: dev-extensions
Requires-Dist: ensemble_launcher[dev-core,inference,mcp]; extra == "dev-extensions"
Provides-Extra: all
Requires-Dist: ensemble_launcher[hpc,inference,mcp]; extra == "all"
Dynamic: license-file

# Ensemble Launcher

A lightweight, scalable tool for launching and orchestrating task ensembles across HPC clusters with intelligent resource management and hierarchical execution.

[Documentation](https://argonne-lcf.github.io/ensemble_launcher/) | [GitHub](https://github.com/argonne-lcf/ensemble_launcher)

## Features

- **Scalability** -- Hierarchical master-worker architecture tested from 1 to 2048+ nodes
- **Flexible Execution** -- Support for serial, MPI, and mixed workloads with Python callables or shell commands
- **Co-Scheduling** -- Run heterogeneous tasks (different node counts, GPU requirements) in a single ensemble
- **Custom Scheduling Policies** -- Pluggable policy system with built-in bin-packing, split, and FIFO strategies, or write your own
- **Actors** -- Distributed actor model with async/await communication over ZMQ for long-lived stateful services
- **Inference** -- Actor-based vLLM wrappers for offline, online, and multi-node LLM serving on HPC clusters

## Quick Example

```python
from ensemble_launcher import EnsembleLauncher

el = EnsembleLauncher("config.json")
results = el.run()
```

```bash
# Or use the CLI
el start my_ensemble.json
```

## Acknowledgments

This work was supported by the U.S. Department of Energy, Office of Science, under contract DE-AC02-06CH11357.

## Citation

```bibtex
@article{tummalapalli2026overcoming,
  title={Overcoming Orchestration Bottlenecks at Exascale: A Decentralized, Policy-Driven Approach for Sim-AI Ensembles},
  author={Tummalapalli, Harikrishna and Simpson, Christine M and Balin, Riccardo and Morozov, Vitali A and Pham, Thang D and Keceli, Murat and Uram, Thomas D},
  journal={arXiv preprint arXiv:2607.12211},
  year={2026}
}
```
