Skip to main content

Efficient Computation of May-Happen-in-Parallel Information for Concurrent Java Programs

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

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 4339))

Abstract

Modeling of runtime threads in static analysis of concurrent programs plays an important role in both reducing the complexity and improving the precision of the analysis. Modeling based on type based techniques merges all runtime instances of a particular type and thereby introduces inaccuracy in the analysis. Other approaches model individual runtime threads explicitly in the analysis and are of high complexity. In this paper we introduce a thread model that is both context and flow sensitive. Individual thread abstractions are identified based on the context and multiplicity of the creation site. The interaction among these abstract threads are depicted in a tree structure known as Thread Creation Tree (TCT). The TCT structure is subsequently exploited to efficiently compute May-Happen-in-Parallel (MHP) information for the analysis of multi-threaded programs. For concurrent Java programs, our MHP computation algorithm runs 1.77x (on an average) faster than previously reported MHP computation algorithm.

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aho, A.V., Sethi, R., Ullman, J.D.: Compilers Principles, Techniques, and Tools. Addison-Wesley publishing company, Reading (1986)

    Google Scholar 

  2. Alstrup, S., Lauridsen, P.W., Thorup, M.: Dominators in linear time. DIKU technical report (35) (1996)

    Google Scholar 

  3. Callahan, D., Subhlok, J.: Static analysis of low-level synchronization. In: Workshop on parallel and distributed debugging, pp. 100–111 (1989)

    Google Scholar 

  4. Choi, J.-D., Gupta, M., Serrano, M.J., Sreedhar, V.C., Midkiff, S.P.: Escape analysis for java. In: Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), pp. 1–19 (1999)

    Google Scholar 

  5. Choi, J., Lee, K., Loginov, A., Callahan, R.O., Sarkar, V., Sridharan, M.: Efficient and precise datarace detection for multithreaded object-oriented programs. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pp. 258–269 (2002)

    Google Scholar 

  6. Duesterwald, E., Soffa, M.L.: Concurrency analysis in the presence of procedures using a data-flow framework. In: Proceedings of the Symposium on Testing, Analysis, and Verification, pp. 36–48 (1991)

    Google Scholar 

  7. Gnu software, gcj - the gnu compiler for the java programming language, http://gcc.gnu.org/java

  8. Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification. In: Sun Microsystems, 2nd edn. (2000)

    Google Scholar 

  9. Krinke, J.: Static slicing of threaded programs. In: Proceedings of the ACM SIGPLAN/ SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, June 1998, pp. 35–41 (1998)

    Google Scholar 

  10. Java grande forum, multi-threaded benchmark suite, http://www.epcc.ed.ac.uk/javagrande

  11. Lamport, L.: How to make a correct multiprocess program execute correctly on a multiprocessor. IEEE Transactions on Computers 46(7), 779–782 (1997)

    Article  MathSciNet  Google Scholar 

  12. Lea, D.: Concurrent Programming in Java, 2nd edn. Addison-Wesley, Reading (2000)

    Google Scholar 

  13. Li, L., Verbrugge, C.: A practical mhp information analysis for concurrent java programs. In: Eigenmann, R., Li, Z., Midkiff, S.P. (eds.) LCPC 2004. LNCS, vol. 3602, pp. 194–208. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  14. Masticola, S.P., Ryder, B.G.: Non-concurrency analysis. In: Proceedings of the Fourth Symposium on Principles and Practices of Parallel Programming, May 1993, pp. 129–138 (1993)

    Google Scholar 

  15. Naumovich, G., Avrunin, G.S., Clarke, L.A.: An efficient algorithm for computing mhp information for concurrent java programs. In: Nierstrasz, O., Lemoine, M. (eds.) ESEC 1999 and ESEC-FSE 1999. LNCS, vol. 1687, pp. 338–354. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  16. Naumovich, G., Avrunin, G.S.: A conservative data flow algorithm for detecting all pairs of statements that happen in parallel. In: Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering, pp. 24–34 (1998)

    Google Scholar 

  17. von Praun, C., Gross, T.R.: Object race detection. In: Proceedings of Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2001), October 2001, pp. 70–82 (2001)

    Google Scholar 

  18. von Praun, C., Gross, T.R.: Static conflict analysis for multithreaded object-oriented programs. In: Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation, pp. 115–128 (2003)

    Google Scholar 

  19. Rinard, M.: Analysis of multithreaded programs. In: Cousot, P. (ed.) SAS 2001. LNCS, vol. 2126, p. 1. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  20. Ruf, E.: Effective synchronization removal for java. In: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation (PLDI 2000), pp. 208–218 (2000)

    Google Scholar 

  21. Sarkar, V.: Analysis and optimization of explicitly parallel programs using the parallel program graph representation. In: Huang, C.-H., Sadayappan, P., Sehr, D. (eds.) LCPC 1997. LNCS, vol. 1366. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  22. Sarkar, V., Simons B.: Parallel program graphs and their classification. In: The Proceedings of ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering (1998)

    Google Scholar 

  23. Shasha, D., Snir, M.: Efficient and correct execution of parallel programs that share memory. ACM Transactions on Programming Languages and Systems 10(2), 282–312 (1988)

    Article  Google Scholar 

  24. Spec jvm98 benchmarks, the standard performance evaluation corporation, http://www.spec.org/osg/jvm98

  25. Sura, Z., Fang, X., Wong, C.-L., Midkiff, S.P., Lee, J., Padua, D.: Compiler techniques for high performance sequentially consistent java programs. In: PPoPP 2005: Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming, pp. 2–13. ACM Press, New York (2005)

    Chapter  Google Scholar 

  26. Tarjan, R.: Depth-first search and linear graph algorithms. SIAM Journal on Computing 1(2), 146–160 (1972)

    Article  MATH  MathSciNet  Google Scholar 

  27. Taylor, R.N.: Complexity of analyzing the synchronization structure of concurrent programs. Acta Informatica 19, 57–84 (1983)

    Article  MATH  MathSciNet  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Barik, R. (2006). Efficient Computation of May-Happen-in-Parallel Information for Concurrent Java Programs. In: Ayguadé, E., Baumgartner, G., Ramanujam, J., Sadayappan, P. (eds) Languages and Compilers for Parallel Computing. LCPC 2005. Lecture Notes in Computer Science, vol 4339. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-69330-7_11

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-69330-7_11

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-69329-1

  • Online ISBN: 978-3-540-69330-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics