Author: Tobi Goodness Popoola
A compiler that detects Static Control Parts (SCoPs) in a C program and generates Polyhedral DataFlow Graph IR.
- Parses C program
- Generates the Iteration Domain component of Polyhedral DataFlow Graph IR.
- Generates the Execution Schedule component of the Polyhedral DataFlow Graph IR.
Generate Documentation to see source manifest
OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doc_doxygen/
INPUT = @CMAKE_CURRENT_SOURCE_DIR@/src/ @CMAKE_CURRENT_SOURCE_DIR@/docs
To specify the location for documentation edit OUTPUT_DIRECTORY in the docs/ folder.
Clang/LLVM
Clang/LLVM: Clang installation is needed
Follow installation information here
Set llvm path variable
$ export /path/to/llvm/bin/directory:$PATH
$ git clone https://github.com/BoiseState-AdaptLab/PDFG-IR_C_frontend.git
$ mkdir build
$ cd build
$ cmake -DBUILD_DOC=[ON|OFF] -DLLVM_BUILD=/path/to/llvm/build -DLLVM_SRC=path/to/llvm/src ../PDFG-IR_C_frontend
BUILD_DOC: ON|OFF builds documentation using deoxygen
LLVM_BUILD: path to llvm build
LLVM_SRC: path to LLVM source
$./build/bin/pdfg-c /test/c_file/path -- -std=c++11
[Strout, Michelle & Lamielle, Alan & Carter, Larry & Ferrante, Jeanne & Kreaseck, Barbara & Olschanowksy, Catherine. (2013). An Approach for Code Generation in the Sparse Polyhedral Framework. Parallel Computing. 53. 10.1016/j.parco.2016.02.004.] (https://www.researchgate.net/publication/259497067_An_Approach_for_Code_Generation_in_the_Sparse_Polyhedral_Framework)
ENABLING POLYHEDRAL OPTIMIZATIONS IN LLVM. Tobias Christian Grosser