Hierarchical Pointer Analysis for Distributed Programs

  • Amir Kamil
  • Katherine Yelick
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4634)


We present a new pointer analysis for use in shared memory programs running on hierarchical parallel machines. The analysis is motivated by the partitioned global address space languages, in which programmers have control over data layout and threads and can directly read and write to memory associated with other threads. Titanium, UPC, Co-Array Fortran, X10, Chapel, and Fortress are all examples of such languages. The novelty of our analysis comes from the hierarchical machine model used, which captures the increasingly hierarchical nature of modern parallel machines. For example, the analysis can distinguish between pointers that can reference values within a thread, within a shared memory multiprocessor, or within a network of processors. The analysis is presented with a formal type system and operational semantics, articulating the various ways in which pointers can be used within a hierarchical machine model. The hierarchical analysis has several applications, including race detection, sequential consistency enforcement, and software caching. We present results of an implementation of the analysis, applying it to data race detection, and show that the hierarchical analysis is very effective at reducing the number of false races detected.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Allen, E., Chase, D., Luchangco, V., Maessen, J.-W., Ryu, S., G. L. S. Jr., Tobin-Hochstadt, S.: The Fortress Language Specification, Version 0.866. Sun Microsystem Inc. (February 2006)Google Scholar
  2. 2.
    Andersen, L.O.: Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, University of Copenhagen (May 1994)Google Scholar
  3. 3.
    Applied Numerical Algorithms Group (ANAG). Chombo, http://seesar.lbl.gov/ANAG/software.html
  4. 4.
    Bailey, D.H., Barszcz, E., Barton, J.T., Browning, D.S., Carter, R.L., Dagum, D., Fatoohi, R.A., Frederickson, P.O., Lasinski, T.A., Schreiber, R.S., Simon, H.D., Venkatakrishnan, V., Weeratunga, S.K.: The NAS Parallel Benchmarks. The International Journal of Supercomputer Applications 5(3), 63–73 (1991)CrossRefGoogle Scholar
  5. 5.
    Berger, M., Colella, P.: Local adaptive mesh refinement for shock hydrodynamics. Journal of Computational Physics 82(1), 64–84 (1989) (Lawrence Livermore Laboratory Report No. UCRL-97196)Google Scholar
  6. 6.
    Bonachea, D.: GASNet specification, v1.1. Technical Report UCB/CSD-02-1207, University of California, Berkeley (November 2002)Google Scholar
  7. 7.
    Carlson, W., Draper, J., Culler, D., Yelick, K., Brooks, E., Warren, K.: Introduction to UPC and language specification. Technical Report CCS-TR-99-157, IDA Center for Computing Sciences (1999)Google Scholar
  8. 8.
    Cray Inc. Chapel Specification 0.4 (February 2005)Google Scholar
  9. 9.
    Datta, K., Bonachea, D., Yelick, K.: Titanium performance and potential: an NPB experimental study. In: Ayguadé, E., Baumgartner, G., Ramanujam, J., Sadayappan, P. (eds.) LCPC 2005. LNCS, vol. 4339, Springer, Heidelberg (2006)CrossRefGoogle Scholar
  10. 10.
    Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 2nd edn. Addison-Wesley, London, UK (2000)Google Scholar
  11. 11.
    Hicks, J.: Experiences with compiler-directed storage reclamation. In: FPCA 1993. Proceedings of the conference on Functional programming languages and computer architecture, pp. 95–105. ACM Press, New York, USA (1993)CrossRefGoogle Scholar
  12. 12.
    Hilfinger, P.N., Bonachea, D., Gay, D., Graham, S., Liblit, B., Pike, G., Yelick, K.: Titanium language reference manual. Technical Report UCB/CSD-04-1163-x, University of California, Berkeley (September 2004)Google Scholar
  13. 13.
    Kamil, A.: Analysis of Partitioned Global Address Space Programs. Master’s thesis, University of California, Berkeley (December 2006)Google Scholar
  14. 14.
    Kamil, A., Su., J., Yelick, K.: Making sequential consistency practical in Titanium. In: Supercomputing 2005 (November 2005)Google Scholar
  15. 15.
    Kamil, A., Yelick, K.: Concurrency analysis for parallel programs with textually aligned barriers. In: Proceedings of the 18th International Workshop on Languages and Compilers for Parallel Computing (October 2005)Google Scholar
  16. 16.
    Liblit, B., Aiken, A.: Type systems for distributed data structures. In: Proceedings of the 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, January 2000, ACM Press, New York (2000)Google Scholar
  17. 17.
    Liblit, B., Aiken, A., Yelick, K.: Type systems for distributed data sharing. In: International Static Analysis Symposium, San Diego, California (June 2003)Google Scholar
  18. 18.
    Lin, Y., Padua, D.A.: Analysis of irregular single-indexed array accesses and its applications in compiler optimizations. In: Watt, D.A. (ed.) CC 2000 and ETAPS 2000. LNCS, vol. 1781, pp. 202–218. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  19. 19.
    Maydan, D.E., Amarasinghe, S.P., Lam, M.S.: Array-data flow analysis and its use in array privatization. In: POPL 1993. Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, New York, NY, USA, pp. 2–15. ACM Press, New York, NY, USA (1993)CrossRefGoogle Scholar
  20. 20.
    Maydan, D.E., Amarsinghe, S., Lam, M.S.: Data dependence and data-flow analysis of arrays. In: Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing, London, UK, pp. 434–448. Springer, Heidelberg (1993)Google Scholar
  21. 21.
    Netzer, R.H.B., Miller, B.P.: What are race conditions?: Some issues and formalizations. ACM Lett. Program. Lang. Syst. 1(1), 74–88 (1992)CrossRefGoogle Scholar
  22. 22.
    Paek, Y., Hoeflinger, J., Padua, D.: Efficient and precise array access analysis. ACM Trans. Program. Lang. Syst. 24(1), 65–109 (2002)CrossRefGoogle Scholar
  23. 23.
    Rugina, R., Rinard, M.: Pointer analysis for multithreaded programs. In: PLDI 1999. Proceedings of the ACM SIGPLAN 1999 Conference on Programming Language Design and Implementation, pp. 77–90. ACM Press, New York, USA (1999)CrossRefGoogle Scholar
  24. 24.
    Saraswat, V.: Report on the Experimental Language X10, Version 0.41. IBM Research (February 2006)Google Scholar
  25. 25.
    Silicon Graphics. CF90 co-array programming manual. Technical Report SR-3908 3.1, Cray Computer (1994)Google Scholar
  26. 26.
    The UPC Consortium. UPC Language Specifications, Version 1.2 (May 2005)Google Scholar
  27. 27.
    Wen, T., Colella, P.: Adaptive mesh refinement in titanium. In: IPDPS. Proceedings of the 19th International Parallel and Distributed Processing Symposium (2005)Google Scholar
  28. 28.
    Yelick, K., Semenzato, L., Pike, G., Miyamoto, C., Liblit, B., Krishnamurthy, A., Hilfinger, P., Graham, S., Gay, D., Colella, P., Aiken, A.: Titanium: A high-performance Java dialect. In: Workshop on Java for High-Performance Network Computing, Stanford, California (February 1998)Google Scholar
  29. 29.
    Zhu, Y., Hendren, L.J.: Communication optimizations for parallel C programs. In: PLDI 1998. Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, New York, NY, USA, pp. 199–211. ACM Press, New York, USA (1998)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2007

Authors and Affiliations

  • Amir Kamil
    • 1
  • Katherine Yelick
    • 1
  1. 1.Computer Science Division, University of California, Berkeley 

Personalised recommendations