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.
- Chord: A static and dynamic program-analysis framework for java.Google Scholar
- Cobertura: A test coverage tool for java. http://cobertura.sourceforge.net.Google Scholar
- The jfilesync java file synchronization utility. http://jfilesync.sourceforge.net.Google Scholar
- The jgrapht java graph library. http://www.jgrapht.org.Google Scholar
- The weblech download and mirror tool. http://sourceforge.net/projects/weblech/+.Google Scholar
- The weka machine-learning library. http://sourceforge.net/projects/weka.Google Scholar
- Saman P Amarasinghe. Parallelizing compiler techniques based on linear inequalities. Technical report, 1997. Google Scholar
Digital Library
- David F. Bacon, Susan L. Graham, and Oliver J. Sharp. Compiler transformations for high-performance computing. ACM Comput. Surv.}, 26:345--420, 1994. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Jacob Burnim and Koushik Sen. Asserting and checking determinism for multithreaded programs. Commun. ACM}, 53:97--105, 2010. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- J. Ferrante, K. Ottenstein, and J. Warren. The program dependence graph and its use in optimization. toplas, 3:319--349, 1987. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Maurice Herlihy and Eric Koskinen. Transactional boosting: a methodology for highly-concurrent transactional objects. In PPOPP, pages 207--216, 2008. Google Scholar
Digital Library
- Maurice P. Herlihy and Jeannette M. Wing. Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12:463--492, 1990. Google Scholar
Digital Library
- C. A. R. Hoare. Proof of correctness of data representations. Acta Inf., 1:271--281, 1972.Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Milind Kulkarni, Donald Nguyen, Dimitrios Prountzos, Xin Sui, and Kesha Pingali. Exploiting the commutativity lattice. In PLDI}, 2011. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Ondrej Lhotak and Laurie J. Hendren. Context-sensitive points-to analysis: Is it worth it. In CC, pages 47--64, 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Amy W. Lim and Monica S. Lam. Maximizing parallelism and minimizing synchronization with affine partitions. Parallel Comput., 24:445--475, 1998. Google Scholar
Digital Library
- Susan Owicki and David Gries. Verifying properties of parallel programs: an axiomatic approach. Commun. ACM, 19:279--285, 1976. Google Scholar
Digital Library
- Susan S. Owicki. Axiomatic Proof Techniques for Parallel Programs. Outstanding Dissertations in the Computer Sciences. Garland Publishing, New York, 1975. Google Scholar
Digital Library
- John Potter, James Noble, and David Clarke. The ins and outs of objects. In Australian Software Engineering Conference, pages 80--89. 1998. Google Scholar
Digital Library
- Martin C. Rinard and Pedro C. Diniz. Commutativity analysis: A new analysis framework for parallelizing compilers. In PLDI, pages 54--67, 1996. Google Scholar
Digital Library
- Martin C. Rinard and Pedro C. Diniz. Commutativity analysis: A technique for automatically parallelizing pointer-based computations. In IPPS, pages 14--22, 1996. Google Scholar
Digital Library
- Martin C. Rinard and Pedro C. Diniz. Semantic foundations of commutativity analysis. In Euro-Par, Vol. I, pages 414--423, 1996. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- John L. Ross and Mooly Sagiv. Building a bridge between pointer aliases and program dependences. Nordic Journal of Computing, 8:221--235, 1998. Google Scholar
Digital Library
- Caitlin Sadowski, Stephen N. Freund, and Cormac Flanagan. Singletrack: A dynamic determinism checker for multithreaded programs. In ESOP, pages 394--409, 2009. Google Scholar
Digital Library
- Manu Sridharan, Stephen J. Fink, and Rastislav Bodik. Thin slicing. In PLDI, pages 112--122, 2007. Google Scholar
Digital Library
- John Whaley. Joeq: A virtual machine and compiler infrastructure. Sci. Comput. Program., 57:339--356, 2005. Google Scholar
Digital Library
Index Terms
HAWKEYE: effective discovery of dataflow impediments to parallelization
Recommendations
HAWKEYE: effective discovery of dataflow impediments to parallelization
OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applicationsParallelization 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 ...
Profiling Dependence Vectors for Loop Parallelization
IPPS '96: Proceedings of the 10th International Parallel Processing SymposiumA dependence relation between two data references is linear if it generates dependence vectors that are linear functions of the loop indices. A linear dependence relation often induces a large number of dependence vectors. Empirical studies also show ...
An Optimized Dependence Convex Hull Partitioning Technique to Maximize Parallelism of Nested Loops with Non-Uniform Dependences
ICPADS '00: Proceedings of the Seventh International Conference on Parallel and Distributed SystemsThere are many methods existing for nested loop partitioning; however, most of them perform poorly when partitioning loops with non-uniform dependences. This paper proposes a generalized and optimized loop partitioning mechanism to exploit parallelism ...







Comments