Enabling more optimizations in GRAPHITE: ignoring memory-based dependences
Résumé
Data-dependences need to be analyzed to guarantee the legality of a loop transformations and parallelization. But many dependences are spurious memory-based dependences: they are induced by storing values in the same memory location. Spurious dependences reduce the degrees of freedom in loop transformations and parallelization. The effective handling of spurious data-dependences in GIMPLE is essential for the effectiveness of polyhedral compilation in GCC. We show that most memory-based-dependences induced by the gimplification can be ignored, rather than scalar/array expanded. Our method relies on an extension of the violated-dependence-analysis technique implemented in GRAPHITE. It has a minimal impact on compilation time and guarantees that we are not loosing any transformation opportunity compared to a source-to-source compilers. We will detail the algorithm, the current state of the implementation and the future plans.
Domaines
Langage de programmation [cs.PL]
Origine : Fichiers produits par l'(les) auteur(s)