skip to main content
research-article
Free Access

Equivalence checking of static affine programs using widening to handle recurrences

Published:05 November 2012Publication History
Skip Abstract Section

Abstract

Designers often apply manual or semi-automatic loop and data transformations on array- and loop-intensive programs to improve performance. It is crucial that such transformations preserve the functionality of the program. This article presents an automatic method for constructing equivalence proofs for the class of static affine programs. The equivalence checking is performed on a dependence graph abstraction and uses a new approach based on widening to find the proper induction hypotheses for reasoning about recurrences. Unlike transitive-closure-based approaches, this widening approach can also handle nonuniform recurrences. The implementation is publicly available and is the first of its kind to fully support commutative operations.

References

  1. Absar, M. J., Marchal, P., and Catthoor, F. 2005. Data-Access optimization of embedded systems through selective inlining transformation. In Proceedings of the 3rd Workshop on Embedded Systems for Real-Time Multimedia (ESTImedia'05). M. Miranda and S. Ha, Eds., IEEE Computer Society, 75--80.Google ScholarGoogle Scholar
  2. Alias, C. and Barthou, D. 2003. On the recognition of algorithm templates. In Proceedings of the International Workshop on Compilers Optimization Meets Compiler Verification. Elsevier Science, 395--409.Google ScholarGoogle Scholar
  3. Barrett, C. and Tinelli, C. 2007. CVC3. In Proceedings of the 19th International Conference on Computer Aided Verification (CAV'07). W. Damm and H. Hermanns, Eds., Lecture Notes in Computer Science, vol. 4590, Springer, 298--302. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Barthou, D., Collard, J.-F., and Feautrier, P. 1997. Fuzzy array dataflow analysis. J. Parallel Distrib. Comput. 40, 2, 210--226. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Barthou, D., Feautrier, P., and Redon, X. 2002. On the equivalence of two systems of affine recurrence equations. In Proceedings of the Euro-Par Conference. Lecture Notes in Computer Science, vol. 2400, Springer, 309--313. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Bastoul, C. 2004. Code generation in the polyhedral model is easier than you think. In Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques. IEEE Computer Society, Los Almantos, CA, 7--16. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Catthoor, F., Danckaert, K., Kulkarni, C., Brockmeyer, E., Kjeldsberg, P., Van Achteren, T., and Omnés, T. 2002. Data Access and Storage Management for Embedded Programmable Processors. Kluwer Academic Publishers, Boston, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Chen, C. 2009. Omega+ library. http://ctop.cs.utah.edu/downloads/omega.tar.gz.Google ScholarGoogle Scholar
  9. Cook, W., Rutherford, T., Scarf, H. E., and Shallcross, D. F. 1991. An implementation of the generalized basis reduction algorithm for integer programming. Cowles Foundation Discussion Papers 990, Cowles Foundation, Yale University.Google ScholarGoogle Scholar
  10. Cousot, P. and Cousot, R. 1992. Comparing the Galois connection and widening/narrowing approaches to abstract interpretation. In Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming. M. Bruynooghe and M. Wirsing, Eds., Lecture Note in Computer Science, vol. 631, Springer, 269--295. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Feautrier, P. 1988. Array expansion. In Proceedings of the 2nd International Conference on Supercomputing. ACM Press, 429--441. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Feautrier, P. 1991. Dataflow analysis of array and scalar references. Int. J. Parallel Program. 20, 1, 23--53.Google ScholarGoogle ScholarCross RefCross Ref
  13. Feautrier, P. 1996. The Data Parallel Programming Model. Lecture Notes in Computer Science, vol. 1132, Springer, 79--100.Google ScholarGoogle ScholarCross RefCross Ref
  14. Franke, B. and O'Boyle, M. 2003. Array recovery and high-level transformations for DSP applications. ACM Trans. Embed. Comput. Syst. 2, 2, 132--162. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Fu, Q., Bruynooghe, M., Janssens, G., and Catthoor, F. 2006. Requirements for constraint solvers in verification of data-intensive embedded system software. In Proceedings of the 1st Workshop on Constraints in Software Testing, Verification and Analysis. B. Blanc, A. Gotlieb, and C. Michel, Eds., 46--57.Google ScholarGoogle Scholar
  16. Godlin, B. and Strichman, O. 2008. Inference rules for proving the equivalence of recursive procedures. Acta Inf. 45, 6, 403--439. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Godlin, B. and Strichman, O. 2009. Regression verification. In Proceedings of the 46th Design Automation Conference (DAC'09). 466--471. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Irigoin, F., Jouvelot, P., and Triolet, R. 1991. Semantical interprocedural parallelisation: An overview of the PIPS project. In Proceedings of the ACM International Conference on Supercomputing (ICS'91). Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Karr, M. 1976. Affine relationships among variables of a program. Acta Info. 6, 133--151.Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Kaufmann, M., Moore, J. S., and Manolios, P. 2000. Computer-Aided Reasoning: An Approach. Kluwer Academic Publishers, Norwell, MA. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Kelly, W., Maslov, V., Pugh, W., Rosser, E., Shpeisman, T., and Wonnacott, D. 1996a. The Omega library. Tech. rep., University of Maryland. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Kelly, W., Pugh, W., Rosser, E., and Shpeisman, T. 1996b. Transitive closure of infinite graphs and its applications. Int. J. Parallel Program. 24, 6, 579--598. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Kundu, S., Tatlock, Z., and Lerner, S. 2009. Proving optimizations correct using parameterized program equivalence. SIGPLAN Not. 44, 6, 327--337. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Lombardy, S., Régis-Gianas, Y., and Sakarovitch, J. 2004. Introducing VAUCANSON. Theor. Comput. Sci. 328, 1-2, 77--96. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Manjunathaiah, M., Megson, G. M., Rajopadhye, S. V., and Risset, T. 2001. Uniformization of affine dependance programs for parallel embedded system design. In Proceedings of ICPP. L. M. Ni and M. Valero, Eds., IEEE Computer Society, 205--213. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Mateev, N., Menon, V., and Pingali, K. 2001. Fractal symbolic analysis. In Proceedings of the 15th International Conference on Supercomputing. ACM, New York, 38--49. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Matsumoto, T., Seto, K., and Fujita, M. 2007. Formal equivalence checking for loop optimization in C programs without unrolling. In Proceedings of the 3rd conference on IASTED International Conference. ACTA Press, 43--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Müller-Olm, M. and Seidl, H. 2004. Precise interprocedural analysis through linear algebra. In Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'04). 330--341. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Necula, G. C. 2000. Translation validation for an optimizing compiler. SIGPLAN Not. 35, 5, 83--94. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Shashidhar, K. C. 2008. Efficient automatic verification of loop and data-flow transformations by functional equivalence checking. Ph.D. thesis.Google ScholarGoogle Scholar
  31. Shashidhar, K. C., Bruynooghe, M., Catthoor, F., and Janssens, G. 2005. Verification of source code transformations by program equivalence checking. In Proceedings of CC. Lecture Notes in Computer Science, vol. 3443, Springer, 221--236. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. van Engelen, R. A. and Gallivan, K. A. 2001. An efficient algorithm for pointer-to-array access conversion for compiling and optimizing DSP applications. In Innovative Archs. for Future Generation High-Performance Processors and Systems. IEEE, 80--89. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Verdoolaege, S. 2010. isl: An integer set library for the polyhedral model. In Proceedings of the Conference on Mathematical Software (ICMS 10). K. Fukuda, J. van der Hoeven, M. Joswig, and N. Takayama, Eds., Lecture Notes in Computer Science, vol. 6327. Springer, 299--302. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Verdoolaege, S. and Bruynooghe, M. 2008. Algorithms for weighted counting over parametric polytopes: A survey and a practical comparison. In Proceedings of the International Conference on Information Theory and Statistical Learning. M. Beck and T. Stoll, Eds.Google ScholarGoogle Scholar
  35. Verdoolaege, S., Cohen, A., and Beletska, A. 2011. Transitive closures of affine integer tuple relations and their overapproximations. In Proceedings of the 18th International Conference on Static Analysis. (SAS'11). Springer, 216--232. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Verdoolaege, S. and Grosser, T. 2012. Polyhedral extraction tool. In Proceedings of the 2nd International Workshop on Polyhedral Compilation Techniques (IMPACT'12).Google ScholarGoogle Scholar
  37. Verdoolaege, S., Janssens, G., and Bruynooghe, M. 2009. Equivalence checking of static affine programs using widening to handle recurrences. In Computer Aided Verification 21. Springer, 599--613. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Verdoolaege, S., Palkovic, M., Bruynooghe, M., Janssens, G., and Catthoor, F. 2010. Experience with widening based equivalence checking in realistic multimedia systems. J. Electron. Test. 26, 2, 279--292. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Verma, M. and Marwedel, P. 2007. Advanced Memory Optimization Techniques for Low-Power Embedded Processors. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Zuck, L. D., Pnueli, A., Goldberg, B., Barrett, C. W., Fang, Y., and Hu, Y. 2005. Translation and run-time validation of loop transformations. Formal Methods Syst. Des. 27, 3, 335--360. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Equivalence checking of static affine programs using widening to handle recurrences

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM Transactions on Programming Languages and Systems
        ACM Transactions on Programming Languages and Systems  Volume 34, Issue 3
        October 2012
        183 pages
        ISSN:0164-0925
        EISSN:1558-4593
        DOI:10.1145/2362389
        Issue’s Table of Contents

        Copyright © 2012 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 5 November 2012
        • Accepted: 1 April 2012
        • Revised: 1 October 2011
        • Received: 1 November 2010
        Published in toplas Volume 34, Issue 3

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article
        • Research
        • Refereed

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!