Skip to main content

Efficient Set Sharing Using ZBDDs

  • Conference paper
Languages and Compilers for Parallel Computing (LCPC 2008)

Abstract

Set sharing is an abstract domain in which each concrete object is represented by the set of local variables from which it might be reachable. It is a useful abstraction to detect parallelism opportunities, since it contains definite information about which variables do not share in memory, i.e., about when the memory regions reachable from those variables are disjoint. Set sharing is a more precise alternative to pair sharing, in which each domain element is a set of all pairs of local variables from which a common object may be reachable. However, the exponential complexity of some set sharing operations has limited its wider application. This work introduces an efficient implementation of the set sharing domain using Zero-supressed Binary Decision Diagrams (ZBDDs). Because ZBDDs were designed to represent sets of combinations (i.e., sets of sets), they naturally represent elements of the set sharing domain. We show how to synthesize the operations needed in the set sharing transfer functions from basic ZBDD operations. For some of the operations, we devise custom ZBDD algorithms that perform better in practice. We also compare our implementation of the abstract domain with an efficient, compact, bitset-based alternative, and show that the ZBDD version scales better in terms of both memory usage and running time.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Similar content being viewed by others

References

  1. Bacon, D.F., Sweeney, P.F.: Fast static analysis of C++ virtual function calls. In: Proc. of OOPSLA 1996, SIGPLAN Notices, October 1996, vol. 31(10), pp. 324–341 (1996)

    Google Scholar 

  2. Berndl, M., Lhoták, O., Qian, F., Hendren, L., Umanee, N.: Points-to Analysis Using BDDs. In: Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation, pp. 103–114. ACM Press, New York (2003)

    Chapter  Google Scholar 

  3. Bryant, R.E.: Symbolic Boolean Manipulation with Ordered Binary-Decision Diagrams. ACM Comput. Surv. 24(3), 293–318 (1992)

    Article  Google Scholar 

  4. Codish, M., Søndergaard, H., Stuckey, P.J.: Sharing and groundness dependencies in logic programs. ACM Transactions on Programming Languages and Systems 21(5), 948–976 (1999)

    Article  Google Scholar 

  5. Coudert, O.: Solving Graph Optimization Problems with ZBDDs (1997)

    Google Scholar 

  6. Cousot, P., Cousot, R.: Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In: Fourth ACM Symposium on Principles of Programming Languages, pp. 238–252 (1977)

    Google Scholar 

  7. Dean, J., Grove, D., Chambers, C.: Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis. In: Olthoff, W. (ed.) ECOOP 1995. LNCS, vol. 952, pp. 77–101. Springer, Heidelberg (1995)

    Google Scholar 

  8. Minato, S.I.: Zero-Suppressed BDDs for Set Manipulation in Combinatorial Problems. In: DAC, pp. 272–277 (1993)

    Google Scholar 

  9. Minato, S.I.: Binary Decision Diagrams and Applications for VLSICAD. Kluwer, Norwell (1996)

    Book  MATH  Google Scholar 

  10. Minato, S.I.: Zero-suppressed BDDs and their Applications. STTT 3(2), 156–170 (2001)

    MATH  Google Scholar 

  11. Jacobs, D., Langen, A.: Accurate and Efficient Approximation of Variable Aliasing in Logic Programs. In: North American Conference on Logic Programming (1989)

    Google Scholar 

  12. JProfiler, http://www.ej-technologies.com/products/jprofiler/

  13. Leroy, X.: Java bytecode verification: algorithms and formalizations. Journal of Automated Reasoning 30(3-4), 235–269 (2003)

    Article  MathSciNet  MATH  Google Scholar 

  14. Lhoták, O., Curial, S., Amaral, J.N.: Using ZBDDs in Points-to Analysis. In: Proceedings of the 20th International Workshop on Languages and Compilers for Parallel Computing (2007)

    Google Scholar 

  15. Meinel, C., Theobald, T.: Algorithms and Data Structures in VLSI Design. Springer, New York (1998)

    Book  MATH  Google Scholar 

  16. Méndez-Lojo, M., Hermenegildo, M.: Precise Set Sharing Analysis for Java-style Programs. In: Logozzo, F., Peled, D.A., Zuck, L.D. (eds.) VMCAI 2008. LNCS, vol. 4905, pp. 172–187. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  17. Muthukumar, K., Hermenegildo, M.: Determination of Variable Dependence Information at Compile-Time Through Abstract Interpretation. In: 1989 North American Conference on Logic Programming, pp. 166–189. MIT Press, Cambridge (1989)

    Google Scholar 

  18. Muthukumar, K., Hermenegildo, M.: Combined Determination of Sharing and Freeness of Program Variables Through Abstract Interpretation. In: 1991 International Conference on Logic Programming, pp. 49–63. MIT Press, Cambridge (1991)

    Google Scholar 

  19. Payet, É., Spoto, F.: Magic-Sets Transformation for the Analysis of Java Bytecode. In: Riis Nielson, H., Filé, G. (eds.) SAS 2007. LNCS, vol. 4634, pp. 452–467. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  20. Somenzi, F.: CUDD: CU Decision Diagram Package (2005), http://vlsi.colorado.edu/~fabio/CUDD/cuddIntro.html

  21. Vahidi, A.: JDD: A Pure Java BDD Library (2008), http://javaddlib.sourceforge.net/jdd/index.html

  22. Whaley, J., Lam, M.S.: Cloning-based context-sensitive pointer alias analysis using binary decision diagrams. In: PLDI, pp. 131–144. ACM, New York (2004)

    Google Scholar 

  23. Yoneda, T., Hatori, H., Takahara, A., Minato, S.I.: BDDs vs. Zero-Suppressed BDDs: for CTL Symbolic Model Checking of petri nets. In: Srivas, M., Camilleri, A. (eds.) FMCAD 1996. LNCS, vol. 1166, pp. 435–449. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  24. Zhu, J.: Symbolic Pointer Analysis. In: ICCAD, pp. 150–157 (2002)

    Google Scholar 

  25. Zhu, J., Calman, S.: Symbolic Pointer Analysis Revisited. In: PLDI, pp. 145–157 (2004)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Méndez-Lojo, M., Lhoták, O., Hermenegildo, M.V. (2008). Efficient Set Sharing Using ZBDDs. In: Amaral, J.N. (eds) Languages and Compilers for Parallel Computing. LCPC 2008. Lecture Notes in Computer Science, vol 5335. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-89740-8_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-89740-8_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-89739-2

  • Online ISBN: 978-3-540-89740-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics