= 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. * [[http://groups.google.com/group/gcc-graphite]] * [[http://groups.google.com/group/gcc-graphite-test]] === 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. [[Graphite_Phone_Call|Notes and audio recordings]] of the phone calls available. (Audio recordings since 01.07.2009) == Architecture of Graphite == * [[Graphite/PolyhedralInterface|Graphite internal polyhedral interface]] * [[PCP]] * [[Graphite/NightlyBuilds | nightly testbuilds]] * [[Graphite/4.5 | Graphite in 4.5]] * Support for [[Graphite/Parallelization | auto-parallelization]], [[AutoparRelated]] == TODO list == * Fix all the [[Graphite/bugs | bugs]]. * [[Graphite/SoC | Graphite Summer of Code Ideas ]] * [[Graphite/Data_deps_todo|Data dependences todo list]] * [[Graphite/PCP/PCP_todo|PCP todo list]] * SCoP detection * Get statistics about SCoP coverage * Extend the current SCoP detection to its limits * [[Graphite/SCoP_detection_on_sese_regions|Region based scop detection algorithm]] * [[PolyhedralModelExtensions|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 * Selecting loop transforms: * Add code motion based loop transforms: fusion, fission, etc. * Better diagnostic of graphite decisions * Testsuite for loop transforms * [[Graphite/LocalCostModel | 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 - [[attachment:graphite2y.pdf|paper]] [[attachment:graphite2y-slides.pdf|slides]]. * Design of Graphite and the Polyhedral Compilation Package - GCCSummit'09 - [[attachment:graphitedesign-paper.pdf|paper]] [[attachment:graphitedesign.pdf|slides]]. * Optimization opportunities in GRAPHITE - GCCSummit'09 - [[attachment:grosser09-optimization-opportunities-in-graphite_paper.pdf|paper]] [[attachment:grosser09-optimization-opportunities-in-graphite_slides.pdf|slides]]. * Automatic streamization in GCC - GCCSummit'09 - [[attachment:streamization-paper.pdf|paper]] [[attachment:streamization-slides.pdf|slides]]. * [[Graphite_Workshop_Nov08|Graphite Workshop]] - November 16-17, 2008 - AMD Austin. * Tutorial on Lambda and Graphite Loop Transformations - GCCSummit'08 Slides - [[attachment:graphite_lambda_tutorial.pdf]]. * GRAPHITE: Towards a Declarative Polyhedral Representation - GREPS'07 Slides - [[attachment:graphite_greps.pdf]]. * GRAPHITE: Polyhedral Analyses and Optimizations for GCC - GCCSummit'06 - [[attachment:graphite_paper.pdf]].