Skip to content

cslab-ntua/elise

Repository files navigation

ELiSE logo

Python Anaconda Discord

Efficient Lightweight Scheduling Estimator (ELiSE)

Description

ELiSE is a framework for fast prototyping and evaluation of scheduling and co-scheduling algorithms in HPC systems. The main focus is to be a simple, fast, small and easily extensible tool. ELiSE is also flexible providing a graphical interface, a web interface and a command line interface.

Demo

elise-gui-demo.mp4

📚 ELiSE Material

💬 Join Us on Discord

Join us on Discord

Stay connected with the ELiSE:

  • Join our community!
  • Get notified about new commits, bug fixes, and releases
  • Ask questions and get support from the community

Usage

GUI

Using Python (Windows and Linux)

conda activate elise
cd framework
python elise.py

Distributable in Linux

cd /path/to/installed/elise
./elise

Distributable in Windows

You can create a shortcut to elise.exe. Otherwise from a Command Prompt or PowerShell:

cd \path\to\installed\elise
.\elise.exe

WebUI

Using Python (Windows and Linux)

conda activate elise
cd framework
python elise.py --webui

Distributable in Linux

cd /path/to/installed/elise
./elise --webui

Distributable in Windows

cd \path\to\installed\elise
.\elise.exe --webui

Terminal (Batch mode)

A schematic file needs to be provided as input in order to execute ELiSE in batch mode

Using Python (Windows and Linux)

conda activate elise
cd framework
python elise.py -f schematic.yml -p [mp,openmpi,intelmpi]

Distributable in Linux

cd /path/to/installed/elise
./elise -f schematic.yml -p [mp,openmpi,intelmpi]

Distributable in Windows

cd \path\to\installed\elise
.\elise -f schematic.yml -p [mp,openmpi,intelmpi]

Distributed Execution

ELiSE distributes based on the inputs and schedulers configured for an experiment. The providers for parallelization are:

  1. Python's multiprocessing library (single host)
  2. Open MPI, tested on Linux (multi-host)
  3. Intel MPI, tested on Windows (multi-host)

A table detailing the operating systems and MPI versions tested will be included in future updates. Preliminary tests suggest that with some minor adjustments, achieving compatibility should be straightforward.

Development

In order to start developing a new algorithm or a core feature for ELiSE, the conda environment should be built. Two yaml files are provided:

  • for Linux: env_linx64.yml
  • for Windows: env_win64.yml

Setting up the environment using conda

For Linux:

# Install the necessary dependencies
conda env create -f env_linx64.yml

# Starting the environment
conda activate elise

For Windows:

# Install the necessary dependencies
conda env create -f env_win64.yml

# Starting the environment
conda activate elise

Developing the interfaces

Although there are three interfaces for ELiSE, only two matter. The batch mode and WebUI. The source code for batch mode is located in framework/batch, while the WebUI source code can be found in framework/webui.

The WebUI serves as a graphical interface for the batch mode of ELiSE, ultimately invoking it to run experiments. Additionally, the GUI acts as a wrapper around the WebUI and operates on the localhost.

Library

The main components of ELiSE consist of the loosely connected packages api/ andframework/realsim:

  • api: This package is designed for loading and editing raw data, which will be utilized to create a workload for simulation runs.
  • realsim: This library defines key elements of a simulation, including the Compute Engine, jobs, database, cluster, scheduling algorithms, and plotting features.

About

Efficient Lightweight Scheduling Estimator (ELiSE)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages