Advertisement

A Program Logic for Dependence Analysis

  • Richard Bubel
  • Reiner Hähnle
  • Asmae Heydari TabarEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11918)

Abstract

Read and write dependences of program variables are essential to determine whether and how a loop or a whole program can be parallelized. State-of-the-art tools for parallelization use approaches that over- as well as under-approximate to compute dependences and they lack a formal foundation. In this paper, we give formal semantics of read and write data dependences and present a program logic that is able to reason about dependences soundly and with full precision. The approach has been implemented in the deductive verification tool KeY for the target language Java.

Keywords

Data dependence Program verification Static analysis 

Notes

Acknowledgment

We thank Prof. Felix Wolf, Mohammad Norouzi, and Arya Mazaheri for providing us with DiscoPoP and for helpful discussions about data dependence analysis.

References

  1. 1.
    Ahrendt, W., Beckert, B., Bubel, R., Hähnle, R., Schmitt, P.H., Ulbrich, M. (eds.): Deductive Software Verification – The KeY Book: From Theory to Practice. LNCS, vol. 10001. Springer, Cham (2016).  https://doi.org/10.1007/978-3-319-49812-6CrossRefGoogle Scholar
  2. 2.
    Albert, E., Bubel, R., Genaim, S., Hähnle, R., Díez, G.R.: A formal verification framework for static analysis–as well as its instantiation to the resource analyzer COSTA and formal verification tool KeY. Softw. Syst. Model. 15(4), 987–1012 (2016)CrossRefGoogle Scholar
  3. 3.
    Allen, F.E., Burke, M.G., Cytron, R., Ferrante, J., Hsieh, W.C.: A framework for determining useful parallelism. In: Lenfant, J. (ed.) Proceedings of the 2nd International Conference on Supercomputing, pp. 207–215. ACM (1988)Google Scholar
  4. 4.
    Amme, W., Braun, P., Thomasset, F., Zehendner, E.: Data dependence analysis of assembly code. Int. J. Parallel Program. 28(5), 431–467 (2000)CrossRefGoogle Scholar
  5. 5.
    Banerjee, U.: An introduction to a formal theory of dependence analysis. J. Supercomput. 2(2), 133–149 (1988)CrossRefGoogle Scholar
  6. 6.
    Barrett, C., Fontaine, P., Tinelli, C.: The Satisfiability Modulo Theories Library (SMT-LIB) (2016). www.SMT-LIB.org
  7. 7.
    Cytron, R., Ferrante, J.: What’s in a name? -or- the value of renaming for parallelism detection and storage allocation. In: International Conference on Parallel Processing, pp. 19–27. Pennsylvania State University Press (1987)Google Scholar
  8. 8.
    Feautrier, P.: Dataflow analysis of array and scalar references. Int. J. Parallel Program. 20(1), 23–53 (1991)CrossRefGoogle Scholar
  9. 9.
    Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3), 319–349 (1987)CrossRefGoogle Scholar
  10. 10.
    Garcia, S., Jeon, D., Louie, C.M., Taylor, M.B.: Kremlin: rethinking and rebooting gprof for the multicore age. In: Hall, M.W., Padua, D.A. (eds.) 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 458–469. ACM (2011)Google Scholar
  11. 11.
    Graf, S., Saidi, H.: Construction of abstract state graphs with PVS. In: Grumberg, O. (ed.) CAV 1997. LNCS, vol. 1254, pp. 72–83. Springer, Heidelberg (1997).  https://doi.org/10.1007/3-540-63166-6_10CrossRefGoogle Scholar
  12. 12.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969).  https://doi.org/10.1145/363235.363259CrossRefzbMATHGoogle Scholar
  13. 13.
    Huda, Z.U., Atre, R., Jannesari, A., Wolf, F.: Automatic parallel pattern detection in the algorithm structure design space. In: 30th IEEE International Parallel and Distributed Processing Symposium, pp. 43–52. IEEE Computer Society (2016)Google Scholar
  14. 14.
    King, J.C.: Symbolic execution and program testing. Commun. ACM 19(7), 385–394 (1976).  https://doi.org/10.1145/360248.360252MathSciNetCrossRefzbMATHGoogle Scholar
  15. 15.
    Li, Z., Jannesari, A., Wolf, F.: An efficient data-dependence profiler for sequential and parallel programs. In: IEEE International Parallel and Distributed Processing Symposium, pp. 484–493. IEEE Computer Society (2015)Google Scholar
  16. 16.
    Liu, W., et al.: POSH: a TLS compiler that exploits program structure. In: Torrellas, J., Chatterjee, S. (eds.) ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPOPP, pp. 158–167. ACM (2006)Google Scholar
  17. 17.
    Maydan, D., Amarsinghe, S., Lam, M.: Data dependence and data-flow analysis of arrays. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds.) LCPC 1992. LNCS, vol. 757, pp. 434–448. Springer, Heidelberg (1993).  https://doi.org/10.1007/3-540-57502-2_63CrossRefGoogle Scholar
  18. 18.
    von Praun, C., Bordawekar, R., Cascaval, C.: Modeling optimistic concurrency using quantitative dependence analysis. In: Chatterjee, S., Scott, M.L. (eds.) 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPOPP, pp. 185–196. ACM (2008)Google Scholar
  19. 19.
    Pugh, W.: The omega test: a fast and practical integer programming algorithm for dependence analysis. In: Martin, J.L. (ed.) Proceedings Supercomputing 1991, pp. 4–13. ACM (1991)Google Scholar
  20. 20.
    Pugh, W., Wonnacott, D.: An exact method for analysis of value-based array data dependences. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds.) LCPC 1993. LNCS, vol. 768, pp. 546–566. Springer, Heidelberg (1994).  https://doi.org/10.1007/3-540-57659-2_31CrossRefGoogle Scholar
  21. 21.
    Pugh, W., Wonnacott, D.: Static analysis of upper and lower bounds on dependences and parallelism. ACM Trans. Program. Lang. Syst. 16(4), 1248–1278 (1994)CrossRefGoogle Scholar
  22. 22.
    Sánchez, D., Yen, L., Hill, M.D., Sankaralingam, K.: Implementing signatures for transactional memory. In: 40th Annual IEEE/ACM International Symposium on Microarchitecture, pp. 123–133. IEEE Computer Society (2007)Google Scholar
  23. 23.
    Snelting, G., et al.: Checking probabilistic noninterference using JOANA. it - Inf. Technol. 56(6), 280–287 (2014)Google Scholar
  24. 24.
    Wasser, N., Bubel, R., Hähnle, R.: Abstract interpretation. In: Ahrendt et al. [1], chap. 6, pp. 167–189Google Scholar
  25. 25.
    Wu, P., Kejariwal, A., Caşcaval, C.: Compiler-driven dependence profiling to guide program parallelization. In: Amaral, J.N. (ed.) LCPC 2008. LNCS, vol. 5335, pp. 232–248. Springer, Heidelberg (2008).  https://doi.org/10.1007/978-3-540-89740-8_16CrossRefGoogle Scholar
  26. 26.
    Yuki, T., Pouchet, L.N.: Polybench/c 4.1 (2015). http://web.cse.ohio-state.edu/~pouchet.2/software/polybench/
  27. 27.
    Zhang, X., Navabi, A., Jagannathan, S.: Alchemist: a transparent dependence distance profiling infrastructure. In: The Seventh International Symposium on Code Generation and Optimization, pp. 47–58. IEEE Computer Society (2009)Google Scholar

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  • Richard Bubel
    • 1
  • Reiner Hähnle
    • 1
  • Asmae Heydari Tabar
    • 1
    Email author
  1. 1.Department of Computer ScienceTechnische Universität DarmstadtDarmstadtGermany

Personalised recommendations