Skip to main content

A Program Logic for Dependence Analysis

  • Conference paper
  • First Online:
Integrated Formal Methods (IFM 2019)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 11918))

Included in the following conference series:

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.

This work was funded by the Hessian LOEWE initiative within the Software-Factory 4.0 project.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    In the HPC community the term dependence (pl. dependences) is used rather than dependency / dependencies. We follow their convention.

  2. 2.

    This is easily justified formally by using \(\{ac_1\}\{ac_2\}\) instead of \(\{ac_1, ac_2\}\) and the original rule \({\mathsf {readAcOnNoRAW}}\), but would result in a longer, more technical proof.

References

  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-6

    Book  Google Scholar 

  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)

    Article  Google Scholar 

  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. Amme, W., Braun, P., Thomasset, F., Zehendner, E.: Data dependence analysis of assembly code. Int. J. Parallel Program. 28(5), 431–467 (2000)

    Article  Google Scholar 

  5. Banerjee, U.: An introduction to a formal theory of dependence analysis. J. Supercomput. 2(2), 133–149 (1988)

    Article  Google Scholar 

  6. Barrett, C., Fontaine, P., Tinelli, C.: The Satisfiability Modulo Theories Library (SMT-LIB) (2016). www.SMT-LIB.org

  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. Feautrier, P.: Dataflow analysis of array and scalar references. Int. J. Parallel Program. 20(1), 23–53 (1991)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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. 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_10

    Chapter  Google Scholar 

  12. Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969). https://doi.org/10.1145/363235.363259

    Article  MATH  Google Scholar 

  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. King, J.C.: Symbolic execution and program testing. Commun. ACM 19(7), 385–394 (1976). https://doi.org/10.1145/360248.360252

    Article  MathSciNet  MATH  Google Scholar 

  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. 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. 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_63

    Chapter  Google Scholar 

  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. 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. 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_31

    Chapter  Google Scholar 

  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)

    Article  Google Scholar 

  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. Snelting, G., et al.: Checking probabilistic noninterference using JOANA. it - Inf. Technol. 56(6), 280–287 (2014)

    Google Scholar 

  24. Wasser, N., Bubel, R., Hähnle, R.: Abstract interpretation. In: Ahrendt et al. [1], chap. 6, pp. 167–189

    Google Scholar 

  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_16

    Chapter  Google Scholar 

  26. Yuki, T., Pouchet, L.N.: Polybench/c 4.1 (2015). http://web.cse.ohio-state.edu/~pouchet.2/software/polybench/

  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 

Download references

Acknowledgment

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

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Asmae Heydari Tabar .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Bubel, R., Hähnle, R., Heydari Tabar, A. (2019). A Program Logic for Dependence Analysis. In: Ahrendt, W., Tapia Tarifa, S. (eds) Integrated Formal Methods. IFM 2019. Lecture Notes in Computer Science(), vol 11918. Springer, Cham. https://doi.org/10.1007/978-3-030-34968-4_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-34968-4_5

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-34967-7

  • Online ISBN: 978-3-030-34968-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics