Predictive Commoning
- Predictive Commoning is a standard optimization to eliminate redundancies across the iterations of
a loop, see e.g. http://www.cs.ualberta.ca/~amaral/cascon/CDP04/slides/tal.pdf. At the moment, our implementation handles predictive commoning for memory accesses (including grouping of the accesses on that the same operation is applied, and reassociation to make this grouping more effective); it should be fairly straightforward to extend the framework to handle other types of redundancies.
Personnel
- Zdenek Dvorak
Delivery Date
- The code is available on predcom branch, bootstraps and passes regtesting and successfully compiles SPEC2000 benchmark suite. Some parts of the algorithm are not implemented in the most efficient way, and may need rewriting before merging. The final version should be available by October 15th, 2006.
Benefits
- Performance gains on some types of code (especially matrix processing) -- e.g., more than 50% improvement on mgrid benchmark.
Dependencies
- None
Modifications Required
- The patch can be split into several major parts:
- Some improvements and bugfixes for alias and dependency analysis.
- Modification of loop unrolling to enable performing optimization
- on the unrolled loop, and keeping an unchanged copy of original loop to handle special cases.
The framework for work with affine combinations (http://gcc.gnu.org/ml/gcc-patches/2006-03/msg00345.html)
- The implementation of the optimization itself.