Metadata-Version: 2.1
Name: anrg.saga
Version: 0.0.8
Summary: Collection of schedulers for distributed computing
Home-page: https://github.com/ANRGUSC/saga
Author: Jared Coleman
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: networkx
Requires-Dist: numpy
Requires-Dist: matplotlib
Requires-Dist: scipy
Requires-Dist: pandas
Requires-Dist: plotly
Requires-Dist: kaleido
Requires-Dist: pysmt
Requires-Dist: wfcommons
Requires-Dist: streamlit
Requires-Dist: dill
Requires-Dist: joblib ==1.3.2
Requires-Dist: statsmodels ==0.14.1
Requires-Dist: seaborn ==0.13.2

# Saga

Saga: **S**cheduling **A**lgorithms **Ga**thered.

## Introduction

This repository contains a collection of scheduling algorithms.
The algorithms are implemented in python using a common interface.
Scripts for validating the schedules produced by the algorithms are also provided.
Scripts for comparing the performance of the algorithms are also provided.

## Usage

### Installation

Clone the repository and install the requirements:

```bash
pip install anrg.saga
```

### Running the algorithms

The algorithms are implemented as python modules.
The following example shows how to run the HEFT algorithm on a workflow:

```python
from saga.schedulers import HeftScheduler

scheduler = HeftScheduler()
network: nx.Graph = ...
task_graph: nx.DiGraph = ...
scheduler.schedule(network, task_graph)
```

See [./examples/heft/main.py](./examples/heft/main.py) for a complete example.
