Improving the performance of parallel LISP by compile time analysis
This paper presents a method to eliminate parts of the overhead introduced by parallel constructs in EDS LISP, a parallel extension of Common Lisp. Futures support a declarative style of explicit parallel programming. In languages with futures there is no static distinction between data calculated locally and data calculated by another process. Hence before data can be accessed a dynamic accessibility check has to be done. If the data is not yet determined an implicit wait has to be performed. Checks are done even when all data objects are present.
An algorithm is presented which does away with a significant amount of these checks. It is a variant of (intra-procedural) abstract interpretation, up to some extend similar to strictness analysis. Unlike other approaches the presented approach copes with both functional and non-functional LISP. The algorithm has been implemented in Common Lisp. The benchmarks are promising.
- [AbHa87]S. Abramsky, C. Hankin, editors: Abstract Interpretation of Declarative Languages, Ellis Horwood Series in Computers and Their Applications, 1987.Google Scholar
- [AhSeUl86]A. Aho, R. Sethi, J. Ullmann, Compilers: Principles, Techniques, and Tools, Addison-Wesley, 1986.Google Scholar
- [ClPJo86]C.Clack, S. Peyton-Jones: Strictness Analysis: a Practical Approach, in Proceedings of the ACM Conference on Functional Languages and Computer Architecture 1985, LNCS 201.Google Scholar
- [HaHe 90]C. Hammer, T. Henties: Parallel Lisp on a Distributed Machine, in EUROPAL Workshop on High Performance and Parallel Computing in Lisp, London, 1990.Google Scholar
- [Hal85]R. Halstead: Multiplisp: A Language for Concurrent Symbolic Computation, in ACM Transactions on Programming Languages and Systems, October 1985.Google Scholar
- [KrHaMo89]D. Kranz, R. Halstead, Jr., E. Mohr: Mul-T: A High-Performance Parallel Lisp, in ACM Programming Language Design and Implementation, Portland, Oregon, June 1989.Google Scholar
- [PJoCl87]S.Peyton-Jones, C.Clack: Finding Fixpoints in Abstract Interpretation, in [AbHa87].Google Scholar
- [PJo87]S.Peyton-Jones, editor: The Implementation of Functional Programming Languages, Prentice Hall, 1987.Google Scholar