Advertisement

Verification of Source Code Transformations by Program Equivalence Checking

  • K. C. Shashidhar
  • Maurice Bruynooghe
  • Francky Catthoor
  • Gerda Janssens
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3443)

Abstract

Typically, a combination of manual and automated transformations is applied when algorithms for digital signal processing are adapted for energy and performance-efficient embedded systems. This poses severe verification problems. Verification becomes easier after converting the code into dynamic single-assignment form (DSA). This paper describes a method to prove equivalence between two programs in DSA where subscripts to array variables and loop bounds are (piecewise) affine expressions. For such programs, geometric modeling can be used and it can be shown, for groups of elements at once, that the outputs in both programs are the same function of the inputs.

Keywords

Outgoing Edge Dependency Mapping Proof Obligation Successor Node Operator Node 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

References

  1. 1.
    Allen, J.R., Kennedy, K., Porterfield, C., Warren, J.D.: Conversion of control dependence to data dependence. In: POPL, pp. 177–189. ACM, New York (1983)Google Scholar
  2. 2.
    Allen, R., Kennedy, K.: Optimizing Compilers for Modern Architectures. Morgan Kaufmann Publishers, San Francisco (2001)Google Scholar
  3. 3.
    Banerjee, U.: Dependence Analysis for Supercomputing. Kluwer Academic Publishers, Dordrecht (1988)Google Scholar
  4. 4.
    Barthou, D., Feautrier, P., Redon, X.: On the equivalence of two systems of affine recurrence equations. In: Monien, B., Feldmann, R.L. (eds.) Euro-Par 2002. LNCS, vol. 2400, pp. 309–313. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  5. 5.
    Catthoor, F., Wuytack, S., de Greef, E., Balasa, F., Nachtergaele, L., Vandecappelle, A.: Custom Memory Management Methodology: Exploration of Memory Organization for Embedded Multimedia System Design. Kluwer Publishers, Dordrecht (1998)Google Scholar
  6. 6.
    Cytron, R., Ferrante, J., Rosen, B.K., Wegman, M.N., Zadeck, F.K.: Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems 13(4), 451–490 (1991)CrossRefGoogle Scholar
  7. 7.
    Feautrier, P.: Array expansion. In: ICS, pp. 429–441. ACM, New York (1988)Google Scholar
  8. 8.
    Goldberg, B., Zuck, L., Barrett, C.: Into the loops: Practical issues in translation validation for optimizing compilers. In: International Workshop on Compiler Optimization Meets Compiler Verification. ENTCS. Elsevier, Amsterdam (2004)Google Scholar
  9. 9.
    Kelly, W., Pugh, W., Rosser, E., Shpeisman, T.: Transitive closure of infinite graphs and its applications. Intl. Journ. of Parallel Prog. 24(6), 579–598 (1996)Google Scholar
  10. 10.
    Mateev, N., Menon, V., Pingali, K.: Fractal symbolic analysis. ACM Transactions on Programming Languages and Systems 25(6), 776–813 (2003)CrossRefGoogle Scholar
  11. 11.
    Necula, G.C.: Translation validation for an optimizing compiler. In: SIGPLAN Programming Language Design and Implementation, pp. 83–95. ACM, New York (2000)CrossRefGoogle Scholar
  12. 12.
    Pugh, W.: A practical algorithm for exact array dependence analysis. Communications of the ACM 35(8), 102–114 (1992)CrossRefGoogle Scholar
  13. 13.
    Shashidhar, K.C., Bruynooghe, M., Catthoor, F., Janssens, G.: Functional equivalence checking for verification of algebraic transformations on array-intensive source code. In: Design, Automation and Test in Europe. IEEE, Los Alamitos (2005)Google Scholar
  14. 14.
    Shashidhar, K.C., Bruynooghe, M., Catthoor, F., Janssens, G.: Automatic Verification of Source Code Transformations on Array-Intensive Programs: Demonstration with Real-life Examples. Tech. Rep. CW 401, Dept. of Computer Science, Katholieke Universiteit Leuven, Belgium (2005)Google Scholar
  15. 15.
    van Engelen, R.A., Gallivan, K.A.: An efficient algorithm for pointer-to-array access conversion for compiling and optimizing DSP applications. In: International Workshop on Innovative Architectures for Future Generation High-Performance Processors and Systems, pp. 80–89. IEEE, Los Alamitos (2001)CrossRefGoogle Scholar
  16. 16.
    Vanbroekhoven, P., Janssens, G., Bruynooghe, M., Corporaal, H., Catthoor, F.: A step towards a scalable dynamic single assignment conversion. Tech. Rep. CW 360, Dept. of Computer Science, Katholieke Universiteit Leuven, Belgium (2003)Google Scholar
  17. 17.
    Wolfe, M.: High Performance Compilers for Parallel Computing. Addison-Wesley Publishing Company, Reading (1996)zbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • K. C. Shashidhar
    • 1
    • 2
  • Maurice Bruynooghe
    • 2
  • Francky Catthoor
    • 1
    • 3
  • Gerda Janssens
    • 2
  1. 1.Interuniversitair Micro-Elektronica Centrum (IMEC) vzwLeuvenBelgium
  2. 2.Departement ComputerwetenschappenKatholieke Universiteit LeuvenBelgium
  3. 3.Departement Elektrotechniek (ESAT)Katholieke Universiteit LeuvenBelgium

Personalised recommendations