Kiter is an iterative algorithm based on K-periodic scheduling to compute the throughput of a CSDFG (see Bodin2016).
Using make release you can compile the project.
Then you can test the Kiter algorithm on standard SDF3 XML files, for example:
./Release/bin/kiter -f benchmarks/IB5CSDF/BlackScholes.xml -aKPeriodicThroughput
Maximum throughput is 2.377931898e-08
Maximum period is 42053349.000000
Execution Time is 0.625631There are a few requirements to compile Kiter, instructions follow.
- Boost
- LibXml2
- (GLPK)
homebrew install gplk
apt-get install git make cmake gcc g++ libboost-all-dev libxml2-dev libglpk-dev glpk-utils
yum install -y glpk-devel cmake findutils unzip gcc make gcc-c++ libxml2-devel boost-devel git wget
By running make release you can compile the project.
The command is :
./Release/bin/kiter -f <input-file> -a KPeriodicThroughputinput-file is an SDF3-like XML file.
Instead of KPeriodicThroughput, more actions are available, a list is available using:
./Release/bin/kiter -h./Release/bin/kiter -f benchmarks/IB5CSDF/BlackScholes.xml -aKPeriodicThroughput
Maximum throughput is 2.377931898e-08
Maximum period is 42053349.000000
Execution Time is 0.625631The throughput value should be interpreted similarly to SDF3-ANALYSIS output Version "27 September 2010".
To compare with SDF3 you can downdload the SDF3 benchmarks and tools doing make sdf3_benchmarks and make sdf3.
Then make test should run most of the tests.
This repos also includes several benchmarks like AGB5CSDF and IB5CSDF. You can also download the SDF3 benchmarks using make sdf3_benchmarks.
benchmarks/AGB5CSDF:
autogen1.xml autogen2.xml autogen3.xml autogen4.xml autogen5.xml
benchmarks/IB5CSDF:
BlackScholes_sized.xml Echo_sized.xml H264_sized.xml JPEG2000_sized.xml PDectect_sized.xml
BlackScholes.xml Echo.xml H264.xml JPEG2000.xml PDectect.xml
@inproceedings{DBLP:conf/dac/BodinKD16,
author = {Bruno Bodin and
Alix Munier Kordon and
Beno{\^{\i}}t Dupont de Dinechin},
title = {Optimal and fast throughput evaluation of {CSDF}},
booktitle = {Proceedings of the 53rd Annual Design Automation Conference, {DAC}
2016, Austin, TX, USA, June 5-9, 2016},
pages = {160},
year = {2016},
crossref = {DBLP:conf/dac/2016},
url = {http://doi.acm.org/10.1145/2897937.2898056},
doi = {10.1145/2897937.2898056},
timestamp = {Fri, 27 May 2016 09:17:23 +0200},
biburl = {http://dblp.uni-trier.de/rec/bib/conf/dac/BodinKD16},
bibsource = {dblp computer science bibliography, http://dblp.org}
}- undefined reference to
GRBModel::addVar : you'll need to compile gurobi C++ interfacemake -C /path/to/gurobi/build/src/`
- Add type for actors in XML and Dataflow
- Save input and output port names for reetrancy ?
- For duration specify a processor type
- print a channel properties XML even if empty
- In the print mapping, if task are on the same mapping, spread then X,Y slightly
- Add new task and a few more function really slow, need to speed them up.