Section: Software
PoCo
Participant : Christophe Alias.
PoCo is a polyhedral compilation framework providing many features to quickly prototype program analysis and optimizations in the polyhedral model. Essentially, PoCo provides:
-
C front-end extracting the polyhedral representation of the input program. The parser itself is based on edg (via rose ), an industrial C/C++ parser from Edison group used in Intel compilers.
-
Extended language of pragmas to feed the source code with compilation directives (a schedule, for example).
-
Symbolic layer on polyhedral libraries Polylib (set operations on polyhedra) and Piplib (parameterized ILP). This feature simplifies drastically the developer task.
-
Dependence analysis (polyhedral dependence graph, array dataflow analysis), array region analysis, array liveness analysis.
-
C and VHDL code generation based on the ideas of P. Boulet and P. Feautrier [31] .
The array dataflow analysis (ADA) of PoCo has been extended to a FADA (Fuzzy ADA) by M. Belaoucha, former PhD student at Université de Versailles. FADALib is available at http://www.prism.uvsq.fr/~bem/fadalib/ .
PoCo has been developed by Christophe Alias. It represents more than 19000 lines of C++ code. The tools Bee, Chuba, and RanK presented thereafter make an extensive use of PoCo abstractions.