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.
Preview
Unable to display preview. Download preview PDF.
References
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.
Ron Cytron, Michael Hind, and Wilson Hsieh. Automatic Generation of DAG Parallelism. SIGPLAN notices, volume 25, number 7, pages 54–68, July 1989.
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.
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.
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.
Spiridon Kalogeropulos. Compiling Techniques for the Parallel Execution of Lisp Programs. Technical report, Bath University, 1990.
Spiridon Kalogeropulos. On partitioning lisp programs. Proceedings of the 1990 EUROPAL: High Performance and Parallel Computing in Lisp Conference, November 1990.
James R Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. Technical Report UCB/CSD 89/502, University of California, 1989.
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.
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.
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.
Robert Tarjan. Depth-First Search and Linear Graph Algorithms. SIAM Journal on Comput. Vol. 1, No. 2, p. 146–160, June 1972.
Ben Wegbreit. Property Extraction in Well-founded Property Sets. IEEE Transactions on Software Engineering, SE-1 (3), pages 270–285, September 1975.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Kalogeropulos, S. (1993). Identifying the available parallelism using static analysis. In: Volkert, J. (eds) Parallel Computation. ACPC 1993. Lecture Notes in Computer Science, vol 734. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57314-3_13
Download citation
DOI: https://doi.org/10.1007/3-540-57314-3_13
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57314-2
Online ISBN: 978-3-540-48055-6
eBook Packages: Springer Book Archive