Skip to content

zephyr06/Energy_Opt_NLP

Repository files navigation

Numerical Optimization for Real-time Systems

This repo provides implementation for RTAS23 paper 'A General and Scalable Method for Optimizing Real-time Systems with Continuous Variables'.

Dependencies

  • CMake

  • Boost

  • GTSAM

  • yaml-cpp

  • cppUnitLite

  • OpenCV

  • Intel Threaded Building Blocks (TBB) The latest official TBB release removed some legacy code, so if possible, try to install this old version.

  • ifopt

  • Pandas(pip install pandas)

  • Seaborn (pip install seaborn)

  • Please let me know if some other packages are missing

  • More about installing GTSAM

    • Sometimes the latest version may not work well, in that case, consider using the commit 7f19e3f43d5d38808b4f30617a187b253eb92b91
    • The Eigen library installed in your system may cause some conflictions. In that case, please add set (GTSAM_USE_SYSTEM_EIGEN TRUE) to CMakeLists.txt

Build and Run

To build the C++ code:

cd Energy_Opt_NLP
mkdir build
cd build
cmake ..
make -j4
make check -j8 # optional, run all the unit tests
make testOptSingle.run # Optimize a single task set with DVFS subject to LL RTA model
make testOptSingleDAGRunSingle.run # Optimize a single task set with DVFS subject to [Nasri19](https://drops.dagstuhl.de/opus/volltexte/2019/10758/) RTA model
make testPeriodFactorsOpt2.run # Control performance optimization for a single task set

To optimize for several task sets collectively, use the scripts provided in CompareWithBaseline/*/*.sh. However, these scripts require loading optimization results of Zhao20. If you want to fully reproduce experiment figures, please ask the authors for code access, run their code, and modify the reading path in this project accordingly(When running our this, it will report path not found and where to modify the path); however, the code provided is enough to re-produce experiments related to our paper.

Build and Run

Generate random DAG task sets

make GenerateTaskSet
./tests/GenerateTaskSet --taskType 3 --taskSetNumber 9 --NumberOfProcessor 2 --N 3 

python ClearResFiles.py --pathDataset TaskData/ControlPerformance_Hybrid_DAG/

Other things to notice before running

  • The parameters that influence optimization process can be found in sources/parameters.yaml. If performing optimization doesn't give good result, you can try adjusting parameters there. set debugMode=1 if you want to see the optimization process and more about the optimization results;
  • A lot of unit tests can be found in tests folder so that you have a better idea about how to use the source functions.
  • This project uses absolute path, so please replace /home/zephyr/Programming/Energy_Opt_NLP with /YOUR/LOCAL/PATH/Energy_Opt_NLP

Please let me know if you have any issues about this project.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages