Skip to main content

A toolkit for constructing and analyzing schedule-abstraction graph in Python

Project description

SAGkit

go-sag

A toolkit for constructing and analyzing schedule-abstraction graph in Python. You may also be interested in Official SAG repository (in C++), sag-go (in GO), and sag-py (in Python).

Install

You may install SAGkit from source (recommended):

git clone https://github.com/RyderCRD/sagkit

or install with pip:

pip install sagkit

or reproduce the results in our paper directly with a docker image (requires Docker):

docker pull caoruide/sagkit

Use

Change direcotry to ./sagkit (over the /src directory):

cd sagkit

Run all unit tests:

python -m unittest discover tests

Normally, all tests will pass correctly. You can then generate jobsets and build the SAGs. Change direcotry to ./src:

cd src

The jobset generator takes the following arguments:

  • --ET_ratio: What percentage of jobs are ET. Default is 15.
  • --utilization: What percentage of the macrocycle is the expectation of the total execution time. Default is 45.
  • --jobset_folder: Which folder to save the jobsets. Default is "./jobsets/".
  • --num_job: How many jobs to include in each job set. Default is 1000.
  • --num_instance: How many jobsets to generate for each set of parameter combinations. Default is 1.

Generate jobsets:

python -m sagkit.jobset_generator [ET_ratio] [utilization] [jobset_folder] [num_job] [num_instance]

The SAG constructor takes the following arguments:

  • --jobset_folder: Which folder to read the jobsets. Default is "./jobsets/".
  • --constructor_type: What constructor(s) to use to do the construction. Default are "original,extended,hybrid".
  • --save_dot: Which folder to save the dot files. Default is "./dotfiles/".
  • --save_statistics: Which path to save the statistics results. Default is "./statistics.csv".

Construct SAGs:

python -m sagkit.sag_constructor [jobset_folder] [constructor_type] [save_dot] [save_statistics]

Reproduce

  • Step 1: Create a folder named 'results' in the current working directory:
mkdir results
  • Step 2: Reproduce Fig. 1 and 2. The .dot files corresponding to the figures ('original.dot' for Fig.1, 'hybrid.dot' for Fig.2) will appear under the /results folder after running the following command:
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor --save_dot True --jobset_folder /basic_idea/
  • Step 3 (optional): Visualize Fig. 1 and 2. This step is optional because the .dot files are readable and easy to understand. Paste the contents of each .dot file to:
https://dreampuf.github.io/GraphvizOnline (you may want to access in incognito mode.)
  • Step 4: Reproduce Fig. 3. Also, you may visualize the .dot files ('original.dot' for Fig. 3 (a), 'extended.dot' for Fig. 3 (b), 'hybrid.dot' for Fig. 3 (c)) following Step 3.
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor --save_dot True --jobset_folder /example1/
  • Step 5: Reproduce Fig. 4. Also, you may visualize the .dot files ('original.dot' for Fig. 4 (a), 'extended.dot' for Fig. 4 (b), 'hybrid.dot' for Fig. 4 (c)) following Step 3.
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor --save_dot True --jobset_folder /example2/
  • Step 6: Generate job sets:
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.jobset_generator --ET_ratio 0,10,15,20,30,40,50,60,70,80,90,100 --utilization 45,50,55,60,65,70,75    
  • Step 7: Reproduce Fig. 5 and Tables 2-4. This step may take some time (29 hours on my machine). All numerical results corresponding to Figure 5 and Tables 2-4 will be automatically generated in the /results/statistics.csv file. The construction times may vary from Fig. 5 (a), (b), (c) depending on the computational power of the machine.
docker run -v "$(pwd)/results:/output" caoruide/sagkit sagkit.sag_constructor  

Contribute

Contributions are welcome! Please feel free to drop your issues and PRs :)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sagkit-0.0.10.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sagkit-0.0.10-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file sagkit-0.0.10.tar.gz.

File metadata

  • Download URL: sagkit-0.0.10.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for sagkit-0.0.10.tar.gz
Algorithm Hash digest
SHA256 f1f7da1a57c3e7a0815fb91c64bc346a963da50915cf460485f710c829016c80
MD5 80fff130b761332e0cd7f45cdccccc4c
BLAKE2b-256 a9651190c3226d3db54df93d8176bfb14f48f448af08827382bf1a20cd36fb95

See more details on using hashes here.

File details

Details for the file sagkit-0.0.10-py3-none-any.whl.

File metadata

  • Download URL: sagkit-0.0.10-py3-none-any.whl
  • Upload date:
  • Size: 18.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for sagkit-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 11767870440b04f742ac2e5a63d0bce90ff97e4fb073a1a520bbc303d2c3349a
MD5 3522ac42424ee8838e0b54abfa859916
BLAKE2b-256 a2021cca6e24f7d390c3437b9ed0aa518a11598a9850708825c50e3d8b36015d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page