skip to main content
research-article

HAWKEYE: effective discovery of dataflow impediments to parallelization

Published:22 October 2011Publication History
Skip Abstract Section

Abstract

Parallelization transformations are an important vehicle for improving the performance and scalability of a software system. Utilizing concurrency requires that the developer first identify a suitable parallelization scope: one that poses as a performance bottleneck, and at the same time, exhibits considerable available parallelism. However, having identified a candidate scope, the developer still needs to ensure the correctness of the transformation. This is a difficult undertaking, where a major source of complication lies in tracking down sequential dependencies that inhibit parallelization and addressing them.

We report on Hawkeye, a dynamic dependence-analysis tool that is designed to assist programmers in pinpointing such impediments to parallelization. In contrast with field-based dependence analyses, which track concrete memory conflicts and thus suffer from a high rate of false reports, Hawkeye tracks dependencies induced by the abstract semantics of the data type while ignoring dependencing arising solely from implementation artifacts. This enables a more concise report, where the reported dependencies are more likely to be real as well as intelligible to the programmer.

References

  1. Chord: A static and dynamic program-analysis framework for java.Google ScholarGoogle Scholar
  2. Cobertura: A test coverage tool for java. http://cobertura.sourceforge.net.Google ScholarGoogle Scholar
  3. The jfilesync java file synchronization utility. http://jfilesync.sourceforge.net.Google ScholarGoogle Scholar
  4. The jgrapht java graph library. http://www.jgrapht.org.Google ScholarGoogle Scholar
  5. The weblech download and mirror tool. http://sourceforge.net/projects/weblech/+.Google ScholarGoogle Scholar
  6. The weka machine-learning library. http://sourceforge.net/projects/weka.Google ScholarGoogle Scholar
  7. Saman P Amarasinghe. Parallelizing compiler techniques based on linear inequalities. Technical report, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. David F. Bacon, Susan L. Graham, and Oliver J. Sharp. Compiler transformations for high-performance computing. ACM Comput. Surv.}, 26:345--420, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovic, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA '06: Proceedings of the 21st annual ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications, pages 169--190, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chandrasekhar Boyapati, Barbara Liskov, and Liuba Shrira. Ownership types for object encapsulation. In Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 213--223, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Jacob Burnim and Koushik Sen. Asserting and checking determinism for multithreaded programs. Commun. ACM}, 53:97--105, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Shigeru Chiba and Muga Nishizawa. An easy-to-use toolkit for efficient java bytecode translators. In Proceedings of the 2nd international conference on Generative programming and component engineering}, pages 364--376, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. J. Ferrante, K. Ottenstein, and J. Warren. The program dependence graph and its use in optimization. toplas, 3:319--349, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Mary W. Hall, Jennifer M. Anderson, Saman P. Amarasinghe, Brian R. Murphy, Shih-Wei Liao, Edouard Bugnion, and Monica S. Lam. Maximizing multiprocessor performance with the suif compiler. Computer, 29:84--89, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Clemens Hammacher, Kevin Streit, Sebastian Hack, and Andreas Zeller. Profiling java programs for parallelism. In Proceedings of the 2009 ICSE Workshop on Multicore Software Engineering, pages 49--55, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Maurice Herlihy and Eric Koskinen. Transactional boosting: a methodology for highly-concurrent transactional objects. In PPOPP, pages 207--216, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Maurice P. Herlihy and Jeannette M. Wing. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12:463--492, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C. A. R. Hoare. Proof of correctness of data representations. Acta Inf., 1:271--281, 1972.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. S. Horwitz, T. Reps, and D. Binkley. Interprocedural slicing using dependence graphs. In Proceedings of the ACM SIGPLAN 1988 conference on Programming Language Design and Implementation}, pages 35--46, June 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Eric Koskinen, Matthew Parkinson, and Maurice Herlihy. Coarse-grained transactions. In Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 19--30, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Milind Kulkarni, Martin Burtscher, Rajasekhar Inkulu, Keshav Pingali, and Cali Cascaval. How much parallelism is there in irregular applications. In PPoPP '09: Proceedings of the 14th ACM SIGPLAN symposium on Principles and practice of parallel programming, pages 3--14, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Milind Kulkarni, Donald Nguyen, Dimitrios Prountzos, Xin Sui, and Kesha Pingali. Exploiting the commutativity lattice. In PLDI}, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Milind Kulkarni, Keshav Pingali, Bruce Walter, Ganesh Ramanarayanan, Kavit Bala, and L. Paul Chew. Optimistic parallelism requires abstractions. In PLDI, pages 211--222, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Ondrej Lhotak and Laurie J. Hendren. Context-sensitive points-to analysis: Is it worth it. In CC, pages 47--64, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Percy Liang, Omer Tripp, Mayur Naik, and Mooly Sagiv. A dynamic evaluation of the precision of static heap abstractions. In OOPSLA, pages 411--427, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Amy W. Lim and Monica S. Lam. Maximizing parallelism and minimizing synchronization with affine partitions. Parallel Comput., 24:445--475, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Susan Owicki and David Gries. Verifying properties of parallel programs: an axiomatic approach. Commun. ACM, 19:279--285, 1976. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Susan S. Owicki. Axiomatic Proof Techniques for Parallel Programs. Outstanding Dissertations in the Computer Sciences. Garland Publishing, New York, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. John Potter, James Noble, and David Clarke. The ins and outs of objects. In Australian Software Engineering Conference, pages 80--89. 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Martin C. Rinard and Pedro C. Diniz. Commutativity analysis: A new analysis framework for parallelizing compilers. In PLDI, pages 54--67, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Martin C. Rinard and Pedro C. Diniz. Commutativity analysis: A technique for automatically parallelizing pointer-based computations. In IPPS, pages 14--22, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Martin C. Rinard and Pedro C. Diniz. Semantic foundations of commutativity analysis. In Euro-Par, Vol. I, pages 414--423, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Daniel J. Rosenkrantz, Sanjay Goel, S. S. Ravi, and Jagdish Gangolly. Structure-based resilience metrics for service-oriented networks. In EDCC, pages 345--362, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. John L. Ross and Mooly Sagiv. Building a bridge between pointer aliases and program dependences. Nordic Journal of Computing, 8:221--235, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Caitlin Sadowski, Stephen N. Freund, and Cormac Flanagan. Singletrack: A dynamic determinism checker for multithreaded programs. In ESOP, pages 394--409, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Manu Sridharan, Stephen J. Fink, and Rastislav Bodik. Thin slicing. In PLDI, pages 112--122, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. John Whaley. Joeq: A virtual machine and compiler infrastructure. Sci. Comput. Program., 57:339--356, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. HAWKEYE: effective discovery of dataflow impediments to parallelization

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!