This repo provides implementation for RTAS23 paper 'A General and Scalable Method for Optimizing Real-time Systems with Continuous Variables'.
-
Intel Threaded Building Blocks (TBB) The latest official TBB release removed some legacy code, so if possible, try to install this old version.
-
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)
toCMakeLists.txt
- Sometimes the latest version may not work well, in that case, consider using the commit
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.
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/
- 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