Skip to main content

An executable representation of distance and direction

  • III. Internal Representation
  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 1991)

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

  • 129 Accesses

Abstract

The dependence flow graph is a novel intermediate representation for optimizing and parallelizing compilers that can be viewed as an executable representation of program dependences. The execution model, called dependencedriven execution, is a generalization of the tagged-token dataflow model that permits imperative updates to memory. The dependence flow graph subsumes other representations such as continuation-passing style [12], data dependence graphs [13], and static single assignment form [8]. In this paper, we show how dependence distance and direction information can be represented in this model using dependence operators. From a functional perspective, these operators can be viewed as functions on streams [4].

This research was supported by an NSF Presidential Young Investigator award (NSF grant #CCR8958543), NSF grant CCR-9008526, and grants from IBM and HP.

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. A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, 1986.

    Google Scholar 

  2. Arvind, K. P. Gostelow, and W. Plouffe. An asynchronous programming language and computing machine. Technical Report 114a, Univ. of Calif., Irvine, Dec. 1978.

    Google Scholar 

  3. R. A. Ballance, A. B. Maccabe, and K. J. Ottenstein. The Program Dependence Web: A representation supporting control-, data-, and demand-driven interpretation of imperative languages. In Proc. of the 1990 SIGPLAN Conference on Programming Language Design and Implementation, pages 257–271, June 1990.

    Google Scholar 

  4. W. H. Burge. Recursive Programming Techniques. Addison-Wesley, Reading, MA, 1975.

    Google Scholar 

  5. R. Cartwright and M. Felleisen. The semantics of program dependence. In Proc. of the 1989 SIGPLAN Conference on Programming Language Design and Implementation, pages 13–27, June 1989.

    Google Scholar 

  6. J.-D. Choi. personal communication, 1991.

    Google Scholar 

  7. P. Cousout and R. Cousout. Abstract Interpretation: A unified lattice model for static analysis of programs by construction of approximations of fixpoints. Proc. of the 4th ACM Symposium on Principles of Programming Languages, pages 238–252, Jan. 1977.

    Google Scholar 

  8. R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. An efficient method of computing static single assignment form. In Proc. of the 16th ACM Symposium on Principles of Programming Languages, pages 25–35, Jan. 1989.

    Google Scholar 

  9. E. W. Dijkstra. A Discipline of Programming. Prentice-Hall, Englewood Cliffs, NJ, 1976.

    Google Scholar 

  10. J. Ferrante, K. J. Ottenstein, and J. D. Warren. The program dependency graph and its uses in optimization. ACM Transactions on Programming Languages and Systems, 9(3):319–349, June 1987.

    Google Scholar 

  11. S. Horwitz. Identifying the semantic and textual differences between two versions of a program. In Proc. of the 1990 SIGPLAN Conference on Programming Language Design and Implementation, pages 234–245, 1990.

    Google Scholar 

  12. G. L. S. Jr. and G. J. Sussman. Scheme: An interpreter for extended lambda calculus. Technical Report Memo 349, M.I.T. Artificial Intellegence Laboratory, 1975.

    Google Scholar 

  13. D. J. Kuck. The Structure of Computers and Computations, volume 1. John Wiley and Sons, New York, 1978.

    Google Scholar 

  14. K. Pingali, M. Beck, R. Johnson, M. Moudgill, and P. Stodghill. Dependence Flow Graphs: An algebraic approach to program dependencies. In Proc. of the 18th ACM Symposium on Principles of Programming Languages, pages 67–78, Jan. 1991.

    Google Scholar 

  15. B. Rosen. Linear time is sometimes quadratic. In Proc. of the 8th ACM Symposium on Principles of Programming Languages, Jan. 1981.

    Google Scholar 

  16. R. P. Selke. A rewriting semantics for program dependence graphs. In Proc. of the 16th ACM Symposium on Principles of Programming Languages, pages 12–24, 1989.

    Google Scholar 

  17. M. N. Wegman and F. K. Zadeck. Constant propagation with conditional branches. In Proc. of the 11th ACM Symposium on Principles of Programming Languages, pages 291–299, 1984.

    Google Scholar 

  18. M. Wolfe. Optimizing Supercompilers for Supercomputers. Pitman Publishing, London, 1989.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Johnson, R., Li, W., Pingali, K. (1992). An executable representation of distance and direction. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1991. Lecture Notes in Computer Science, vol 589. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0038661

Download citation

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

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-55422-6

  • Online ISBN: 978-3-540-47063-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics