Skip to main content

Detecting value-based scalar dependence

  • Back to Basics: Program Analysis
  • Conference paper
  • First Online:
Book cover Languages and Compilers for Parallel Computing (LCPC 1994)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 892))

Abstract

Precise value-based data dependence analysis for scalars is useful for advanced compiler optimizations. The new method presented here for flow and output dependence uses Factored Use and Def chains (FUD chains), our interpretation and extension of Static Single Assignment. It is precise with respect to conditional control flow and dependence vectors. Our method detects dependences which are independent with respect to arbitrary loop nesting, as well as loop-carried dependences. A loop-carried dependence is further classified as being carried by the previous iteration, with distance 1, or by any previous iteration, with direction <. This precision cannot be achieved by traditional analysis, such as dominator information or reaching definitions. To compute anti- and input dependence, we use Factored Redef-Use chains, which are related to FUD chains. We are not aware of any prior work which explicitly deals with scalar data dependence utilizing a sparse graph representation.

Supported in part by NSF grant CCR-9113885 and a grant from Intel Corporation and the Oregon Advanced Computing Institute.

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.

References

  1. John R. Allen and Ken Kennedy. Automatic translation of Fortran programs to vector form. ACM Trans. on Programming Languages and Systems, 9(4):491–542, October 1987.

    Google Scholar 

  2. Robert A. Ballance, Arthur B. Maccabe, and Karl J. Ottenstein. The Program Dependence Web: A representation supporting control-, data-, and demand-driven interpretation of imperative languages. In Proc. ACM SIGPLAN '90 Conf. on Programming Language Design and Implementation, pages 257–271, White Plains, NY, June 1990.

    Google Scholar 

  3. Michael Burke, Ron Cytron, Jeanne Ferrante, and Wilson Hsieh. Automatic generation of nested, fork-join parallelism. The Journal of Supercomputing, 3(2):71–88, July 1989.

    Google Scholar 

  4. Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conf. Record 18th Annual ACM Symp. Principles of Programming Languages, pages 55–66, Orlando, Florida, January 1991.

    Google Scholar 

  5. George Cybenko, Lyle Kipp, Lynn Pointer, and David Kuck. Supercomputer performance evaluation and the Perfect Benchmarks. In International Conference on Supercomputing, pages 254–266, March 1990.

    Google Scholar 

  6. Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing Static Single Assignment form and the control dependence graph. ACM Trans. on Programming Languages and Systems, 13(4):451–490, October 1991.

    Google Scholar 

  7. Paul Feautrier. Dataflow analysis of array and scalar references. International Journal of Parallel Programming, 20(1):23–54, 1991.

    Google Scholar 

  8. Michael P. Gerlek, Eric Stoltz, and Michael Wolfe. Beyond induction variables: Detecting and classifying sequences using a demand-driven SSA form. To appear in TOPLAS.

    Google Scholar 

  9. Richard Johnson and Keshav Pingali. Dependence-based program analysis. In Proc. ACM SIGPLAN '93 Conf. on Programming Language Design and Implementation, pages 78–89, Albuquerque, NM, June 1993.

    Google Scholar 

  10. Vadim Maslov. Lazy array data-flow dependence analysis. In Conf. Record 21st Annual ACM Symp. Principles of Programming Languages, pages 311–325, Portland, OR, January 1994.

    Google Scholar 

  11. Eric Stoltz, Michael P. Gerlek, and Michael Wolfe. Extended SSA with factored use-def chains to support optimization and parallelism. In Proc. of 27th Annual Hawaii International Conference on System Sciences, pages 43–52, January 1994.

    Google Scholar 

  12. Eric Stoltz, Michael Wolfe, and Michael P. Gerlek. Constant propagation: A fresh, demand-driven look. In Symposium on Applied Computing, Phoenix, AZ, March 1994. ACM SIGAPP.

    Google Scholar 

  13. Chau-Wen Tseng. An optimizing Fortran D compiler for MIMD distributed-memory machines. PhD Dissertation TR93-199, Rice University, Dept. of Computer Science, January 1993.

    Google Scholar 

  14. Michael E. Wolf. Improving locality and parallelism in nested loops. PhD Dissertation COMP TR. CSL-TR-92-538, Stanford Univ., Dept. Computer Science, August 1992.

    Google Scholar 

  15. Michael Wolfe. Optimizing Supercompilers for Supercomputers. Research Monographs in Parallel and Distributed Computing. Pitman Publishing, London, 1989. (also available from MIT Press).

    Google Scholar 

  16. Michael Wolfe and Utpal Banerjee. Data dependence and its application to parallel processing. International J. Parallel Programming, 16(2):137–178, April 1987.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Keshav Pingali Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints and permissions

Copyright information

© 1995 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Stoltz, E., Wolfe, M. (1995). Detecting value-based scalar dependence. In: Pingali, K., Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1994. Lecture Notes in Computer Science, vol 892. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0025879

Download citation

  • DOI: https://doi.org/10.1007/BFb0025879

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-58868-9

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

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics