Graphite: Gimple Represented as Polyhedra
Graphite is a framework for high-level loop optimizations on the polyhedral model. The Graphite branch has been merged in August 2008 in the trunk. The branch continues to be maintained and contains new developments that will be merged in next releases. To build GCC with the Graphite loop transform framework, one can follow these building instructions.
Graphite Mailing List
There is a mailing list available: http://groups.google.com/group/gcc-graphite
Please keep as much discussion as possible on the mailinglist to help new developers. We do not want to keep useful information hidden in private mail boxes.
Architecture of Graphite
TODO list
Fix all the open bugs and missing features reported in GCC's bugzilla. When reporting a problem against Graphite, please tag the bug with "[graphite]" in the subject
Remove limit_scops() Bug 37705
- SCoP detection
- Get statistics about SCoP coverage
- Extend the current SCoP detection to its limits
Extending the polyhedral representation beyond Static Control Parts (SCoPs)
- Code generation
- Improve quality of generated code
Add heuristics to CLooG based on information about the weight of statements
- Minimize the number of copies of scalar statements
Support for auto-parallelization, AutoparRelated
- Support for streamization
- Support for auto-vectorization
- Improve quality of generated code
- Selecting loop transforms:
- Add code motion based loop transforms: fusion, fission, etc.
- Better diagnostic of graphite decisions
- Testsuite for loop transforms
- make sure that swim is interchanged in Graphite
- Cost model for -floop-interchange and -floop-block: one model for locality, and one for combined coarse-grain parloops and locality
- Local cost model: static evaluation of the effects of loop transform on a single transform.
- Global cost model: for a composition of loop transforms.
- Iterative selection: do and undo transforms.
- Dynamic selection: for each of the above points, but integrating in the cost functions informations from runtime measures.
Related work
Design of Graphite and the Polyhedral Compilation Package - GCCSummit'09 - paper slides.
Optimization opportunities in GRAPHITE - GCCSummit'09 - paper slides.
Automatic streamization in GCC - GCCSummit'09 - paper slides.
Graphite Workshop - November 16-17, 2008 - AMD Austin.
Tutorial on Lambda and Graphite Loop Transformations - GCCSummit'08 Slides - graphite_lambda_tutorial.pdf.
GRAPHITE: Towards a Declarative Polyhedral Representation - GREPS'07 Slides - graphite_greps.pdf.
GRAPHITE: Polyhedral Analyses and Optimizations for GCC - GCCSummit'06 - graphite_paper.pdf.