Graphite: Gimple Represented as Polyhedra
Graphite is a framework for high-level memory optimizations using the polyhedral model.
Graphite branch has been merged in August 2008 into trunk. Information about future graphite plans can be seen here: Graphite-4.8 and at http://gcc.gnu.org/ml/gcc/2012-02/msg00186.html. For the branch merge into the GCC 4.8 trunk, see also http://gcc.gnu.org/ml/gcc-patches/2012-06/msg01470.html
Contact
Mailing List
Please keep as much discussion as possible on the mailing lists to help new developers. We do not want to keep useful information hidden in private mail boxes.
Weekly phone calls
We have weekly phone meetings every Wednesday at 9am Austin, 10 am NY, 4pm Paris, 5pm Haifa. Everybody is invited. Just write a mail to get number and access code.
Notes and audio recordings of the phone calls available. (Audio recordings since 01.07.2009)
Architecture of Graphite
Support for auto-parallelization, AutoparRelated
TODO list
Fix all the bugs.
- 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 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
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
GRAPHITE Two Years After: First Lessons Learned From Real-World Polyhedral Compilation - GROW'10 - paper slides.
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.