Section: Software and Platforms
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:
-
A 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.
-
An extended language of pragmas to feed the source code with compilation directives (a schedule, for example).
-
A symbolic layer on polyhedral libraries Polylib (set operations on polyhedra) and Piplib (parameterized ILP, see Section 5.2 ). This feature simplifies drastically the developer task.
-
Some dependence analysis (polyhedral dependence graph, array dataflow analysis), array region analysis, array liveness analysis.
-
A C and VHDL code generation based on the ideas of P. Boulet and P. Feautrier [16] .
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 https://bitbucket.org/mbelaoucha/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.