avanhatt / dfg-coverings

Data flow graph coverings

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Finding redundancies in data flow graph

This project uses LLVM to find redundant subgraphs in programs' static data flow graphs. The high level motivation and details are described [here][TODO].

Dependencies

We require C++17, LLVM 8, and Python 3.

Additional dependencies are (for OSX):

brew install graphviz
pip install graphviz
pip install networkx

Testing and usage

First, build the LLVM pass with:

mkdir build
cd build; cmake ..; cd ..
make pass

To find common subgraphs in a single source file and generate dynamic profiling results, run:

make <filename base>-profiling.o
<filename base>-profiling.o

We use the Embench embedded profiling benchmark suite.

To generate subgraph stencils for each Embench benchmark:

python3 profiling.py

To check coverage of specific stencils in <stencil_file> for each Embench benchmark:

python3 profiling.py --stencil_json <stencil_file>

To generate evaluation graphs (after generating stencils for Embench benchmarks):

python3 graph.py

About

Data flow graph coverings

License:MIT License


Languages

Language:C++ 58.2%Language:C 39.9%Language:Python 1.7%Language:Makefile 0.1%Language:CMake 0.1%Language:Shell 0.0%