Advertisement

Identifying the available parallelism using static analysis

  • Spiridon Kalogeropulos
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 734)

Abstract

In this paper we present a technique for identifying the available parallelism in a sequential Lisp program which is related to the data dependences between program constructs. Our technique first removes some of the data dependences due to assignments to scalar variables in a Lisp program to increase its available parallelism and consequently computes the required precedence constraints necessary for the creation of a parallel program, which is semantically equivalent to the sequential one, by detecting the data dependences between expressions using static analysis. We remove some of the data dependences due to assignments to scalar variables by transforming a Lisp program into Static Single Assignment (SSA) form.

Key words

Static Single Assignment Data Depentence Precedence Constrains 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    David R. Chase, Mark Wegman, and F. Kenneth Zadeck. Analysis of Pointers and Structures. SIGPLAN'90 Conference on Programming Language Design and Implementation, Vol. 25, Num. 6, pages 296–310, June 1990.Google Scholar
  2. 2.
    Ron Cytron, Michael Hind, and Wilson Hsieh. Automatic Generation of DAG Parallelism. SIGPLAN notices, volume 25, number 7, pages 54–68, July 1989.Google Scholar
  3. 3.
    Susan Horwitz, Phil Pfeiffer, and Thomas Reps. Dependence Analysis for Pointer Variables. Proceedings of the SIGPLAN '89 Symposium on Compiler Construction, Vol. 24, Num. 7, pages 28–40, June 1989.Google Scholar
  4. 4.
    N. D. Jones and S. S. Muchnick. Flow Analysis and Optimization of LISP-like Strutures. Program Flow Analysis: Theory and Applications, chapter 4, pages 102–131, Prentice-Hall, 1981.Google Scholar
  5. 5.
    N. D. Jones and S. S. Muchnick. A Flexible Approach to Interprocedural Data Flow Analysis and Programs with Recursive Data Structures. 9th Annual ACM Symposium on Principles of Programming Languages, pages 66–74, January 1982.Google Scholar
  6. 6.
    Spiridon Kalogeropulos. Compiling Techniques for the Parallel Execution of Lisp Programs. Technical report, Bath University, 1990.Google Scholar
  7. 7.
    Spiridon Kalogeropulos. On partitioning lisp programs. Proceedings of the 1990 EUROPAL: High Performance and Parallel Computing in Lisp Conference, November 1990.Google Scholar
  8. 8.
    James R Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. Technical Report UCB/CSD 89/502, University of California, 1989.Google Scholar
  9. 9.
    James R. Larus and Paul N. Hilfinger. Detecting Conflicts Between Structure Accesses. Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation Atlanta, Georgia, pages 21–34, June 1988.Google Scholar
  10. 10.
    B. K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Global Value Numbers and Redundant Computations. Proceeding of the Fifteenth Annual ACM SIGACTSIGPLAN Symposium on Principles of Programming Languages, p. 12–27, 1988.Google Scholar
  11. 11.
    C. Ruggieri and T. P. Murtagh. Lifetime Analysis of Dynamically Allocated Objects. Fifteenth Annual ACM Symposium on Principles of Programming Languages, pages 285–293, January 1988.Google Scholar
  12. 12.
    Robert Tarjan. Depth-First Search and Linear Graph Algorithms. SIAM Journal on Comput. Vol. 1, No. 2, p. 146–160, June 1972.Google Scholar
  13. 13.
    Ben Wegbreit. Property Extraction in Well-founded Property Sets. IEEE Transactions on Software Engineering, SE-1 (3), pages 270–285, September 1975.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • Spiridon Kalogeropulos
    • 1
  1. 1.INMOS Software GroupAlmondsbury Bristol

Personalised recommendations