Abstract
Compiler optimization of array-intensive programs involves extensive application of loop transformations and arithmetic transformations. Hence, translation validation of array-intensive programs requires manipulation of intervals of integers (representing domains of array indices) and relations over such intervals to account for loop transformations and simplification of arithmetic expressions to handle arithmetic transformations. A major obstacle for verification of such programs is posed by the presence of recurrences, whereby an element of an array gets defined in a statement S inside a loop in terms of some other element(s) of the same array which have been previously defined through the same statement S. Recurrences lead to cycles in the data-dependence graph of a program which make dependence analyses and simplifications (through closed-form representations) of the data transformations difficult. Another technique which works better for recurrences does not handle arithmetic transformations. In this work, array data-dependence graphs (ADDGs) are used to represent both the original and the optimized versions of the program and a validation scheme is proposed where the cycles due to recurrences in the ADDGs are suitably abstracted as acyclic subgraphs. Thus, this work provides a unified equivalence checking framework to handle loop and arithmetic transformations along with most of the recurrences -- this combination of features had not been achieved by a single verification technique earlier.
- K. Banerjee, D. Sarkar, and C. Mandal. Extending the FSMD framework for validating code motions of array-handling programs. IEEE Trans. on CAD of ICS, 33(12):2015–2019, 2014.Google ScholarCross Ref
- D. Barthou, P. Feautrier, and X. Redon. On the equivalence of two systems of affine recurrence equations (research note). In Euro-Par Conference on Parallel Processing, pages 309–313, 2002. Google ScholarDigital Library
- Y. Bouchebaba, B. Girodias, G. Nicolescu, E. M. Aboulhamid, B. Lavigueur, and P. G. Paulin. MPSoC memory optimization using program transformation. ACM Trans. Design Autom. Electr. Syst., 12(4), 2007. Google ScholarDigital Library
- G. Iooss, C. Alias, and S. V. Rajopadhye. On program equivalence with reductions. In Static Analysis, pages 168–183, 2014.Google Scholar
- I. Kadayif, M. T. Kandemir, G. Chen, O. Ozturk, M. Karaköy, and U. Sezer. Optimizing array-intensive applications for on-chip multiprocessors. IEEE Trans. Parallel Distrib. Syst., 16(5):396–411, 2005. Google ScholarDigital Library
- C. Karfa, K. Banerjee, D. Sarkar, and C. Mandal. Equivalence checking of array-intensive programs. In ISVLSI, pages 156–161, 2011. Google ScholarDigital Library
- C. Karfa, K. Banerjee, D. Sarkar, and C. Mandal. Experimentation with SMT solvers and theorem provers for verification of loop and arithmetic transformations. In I-CARE, pages 3:1–3:4, 2013a. C. Karfa, K. Banerjee, D. Sarkar, and C. Mandal. Verification of loop and arithmetic transformations of array-intensive behaviours. IEEE Trans. on CAD of ICS, 32(11):1787–1800, 2013b. S. Kundu, S. Lerner, and R. Gupta. Translation validation of high-level synthesis. IEEE Trans on CAD of ICS, 29(4):566–579, 2010. Google ScholarDigital Library
- B. Landwehr and P. Marwedel. A new optimization technique for improving resource exploitation and critical path minimization. In ISSS, pages 65– 72, 1997. Google ScholarDigital Library
- T. Matsumoto, K. Seto, and M. Fujita. Formal equivalence checking for loop optimization in C programs without unrolling. In ACST, pages 43– 48, 2007. Google ScholarDigital Library
- V. Menon, K. Pingali, and N. Mateev. Fractal symbolic analysis. ACM Trans. Program. Lang. Syst., 25(6):776–813, 2003. Google ScholarDigital Library
- M. Potkonjak, S. Dey, Z. Iqbal, and A. C. Parker. High performance embedded system optimization using algebraic and generalized retiming techniques. In ICCD, pages 498–504, 1993.Google ScholarCross Ref
- D. Sarkar and S. De Sarkar. A theorem prover for verifying iterative programs over integers. IEEE Trans Software. Engg., 15(12):1550– 1566, 1989. Google ScholarDigital Library
- K. C. Shashidhar. Efficient Automatic Verification of Loop and Dataflow Transformations by Functional Equivalence Checking. PhD thesis, Katholieke Universiteit Leuven, 2008.Google Scholar
- K. C. Shashidhar, M. Bruynooghe, F. Catthoor, and G. Janssens. Functional equivalence checking for verification of algebraic transformations on array-intensive source code. In DATE, pages 1310–1315, 2005. Google ScholarDigital Library
- R. E. Tarjan. Depth-first search and linear graph algorithms. SIAM J. Comput., 1(2):146–160, 1972.Google ScholarDigital Library
- S. Verdoolaege. ISL: An Integer Set Library for the Polyhedral Model. In ICMS, pages 299–302, 2010. Google ScholarDigital Library
- S. Verdoolaege, G. Janssens, and M. Bruynooghe. Equivalence checking of static affine programs using widening to handle recurrences. In CAV, pages 599–613, 2009. Google ScholarDigital Library
- S. Verdoolaege, G. Janssens, and M. Bruynooghe. Equivalence checking of static affine programs using widening to handle recurrences. ACM Trans. Program. Lang. Syst., 34(3), 2012. Google ScholarDigital Library
- J. Zory and F. Coelho. Using algebraic transformations to optimize expression evaluation in scientific codes. In PACT, pages 376–384, 1998. Google ScholarDigital Library
- L. D. Zuck, A. Pnueli, B. Goldberg, C. W. Barrett, Y. Fang, and Y. Hu. Translation and run-time validation of loop transformations. Formal Methods in System Design, 27(3):335–360, 2005. Google ScholarDigital Library
Index Terms
- Translation validation of loop and arithmetic transformations in the presence of recurrences
Recommendations
Translation validation of loop and arithmetic transformations in the presence of recurrences
LCTES 2016: Proceedings of the 17th ACM SIGPLAN/SIGBED Conference on Languages, Compilers, Tools, and Theory for Embedded SystemsCompiler optimization of array-intensive programs involves extensive application of loop transformations and arithmetic transformations. Hence, translation validation of array-intensive programs requires manipulation of intervals of integers (...
Translation and Run-Time Validation of Loop Transformations
This paper presents new approaches to the validation of loop optimizations that compilers use to obtain the highest performance from modern architectures. Rather than verify the compiler, the approach of translation validation performs a validation ...
Loop Transformation Using Nonunimodular Matrices
Linear transformations are widely used to vectorize and parallelize loops. A subset of these transformations are unimodular transformations. When a unimodular transformation is used, the exact bounds of the transformed loop nest are easily computed and ...
Comments