ADFG: schedule analysis and synthesis for Affine Dataflow Graphs
ADFG checks the scheduling feasibility of an Ultimately Cyclo-Static DataFlow (UCSDF) graph which represents a system of actors (or processes) and their dependencies (data production and consumption rates), aka channels between them.
ADFG schedules static and cyclo-static dataflow graphs by computing their channels properties: initial number of tokens and maximum size. ADFG offers several scheduling policies and can detect unschedulable systems.
ADFG comes with a very simple API, a command-line tool to analyse sdf3 files, and some eclipse plugins.
Installation
Just run ./install.sh
at the top and follow the instructions.
The project can be used in Eclipse, but the scripts build ADFG with Maven.
To easily export the binaries, run ./export.sh
: it will build zip
files with compiled libraries, jars, and also some examples.
To create the full documentation, run ./makedoc.sh
: it will generate
the documentation (javadoc website + pdf files) in the doc/ folder.
The code is compliant with Java 8 except the javadoc doclet used to retrieve the @todo tags.
This doclet cannot be used anymore with a Java version less than 9 (because of "tools.jar" removal in 9+ versions).
If you use several java version, make sure tu use version 9+ with the following command:
sudo update-java-alternatives -s java-1.9.0-openjdk-amd64
(for example).
If you only have Java 8, then you should deactivate the doclet module:
- comment
<module>../fr.inria.tea.adfg.doc</module>
in ADFG/adfgCoreAlgos/aggregator/pom.xml - comment the whole
tex.todo.doc
reportSet in ADFG/adfgCoreAlgos/fr.inria.tea.adfg.algos/pom.xml Moreover, due to a known bug with openjdk-8, you may need to update you maven settings with thesettings.xml
file provided in the root directory. This is due to tests in the UMLGraph module. See: https://stackoverflow.com/questions/53010200/maven-surefire-could-not-find-forkedbooter-class
Requirements
- gcc / g++ / make
- java (9+ advised) / maven (3.6.2+ advised)
- git, grep, sed
- latex (to compite the documentation)
Documentation (see ADFG/adfgCoreAlgos/fr.inria.tea.adfg.doc)
This documentation folder contains two latex documents which can be compiled with
a Makefile. These documents are dedicated to both standard users and developers
and reuse some of this document content.
You might need to compile these document yourself if you use an older version than Java 9.
Otherwise, juste type ./makedoc.sh
in the root folder.
Some extra documentation is available for the fr.inria.tea.adfg.algos project:
an API html doc can be generated by going into this project and execute
mvn site
. Moreover
it will also generates the "todo" page of the latex documentation.
sdf3 examples (see examples/sdf3)
This folder contains some dataflow examples in the sdf3 format (a little bit modified for csdf, you can find the new xsd schema in the ADFG/adfgCoreAlgos/fr.inria.tea.adfg.algos/src/main/resource/sdf3 folder).
A script (generateTestFiles.sh) is also present to help generating test case (it will run all possible scheduling policies on all present sdf3 files and store the result in new sdf3 files). Other scripts are present in order to generate experiment artefacts.
Scheduling simulation with Cheddar
ADFG can inter-operate with Cheddar - an open-source scheduling analyzer - by exporting the computed results in a xml format that can be read by Cheddar. Scheduling simulation is used to verify the schedules synthesized by ADFG and provide additional information such as numbers of preemptions and max/min/average buffer utilizations over a simulation interval. A simple method to test the tool-chain is to use this virtual machine with ADFG and Cheddar pre-installed. The virtual machine is also configured with tools to compile ADFG and Cheddar from their source code. The default username and password are cheddaradfg.
License
The code in ADFG/ folder is distributed under the GPL v2 license. See https://www.gnu.org/licenses/old-licenses/gpl-2.0.fr.html However, we provide the unmodified source code of two libraries we depend on:
- SCOTCH under the CeCILL-C V1 license
- LpSolve under the LGPL license Moreover, the java code has dependencies to multiple maven artefacts under various licenses.
Contributors
Former members of the TEA team at INRIA Rennes:
- Adnan Bouakaz
- Alexandre Honorat
- Hai Nam Tran
- Loïc Besnard
- Thierry Gaultier
- Jean-Pierre Talpin
- Shuvra S. Bhattacharyya
To contact us, plese see email adresses on: