ABSTRACT
Static program analysis limits the performance improvements possible from compile-time parallelization. Dynamic program parallelization shifts a portion of the analysis from complie-time to run-time, thereby enabling optimizations whose static detection is overly expensive or impossible. Lambda tagging and heap resolution are two new techniques for finding loop and non-loop parallelism in imperative, sequential languages with first-class procedures and destructive heap operations (e.g., ML and Scheme).
Lambda tagging annotates procedures during compilation with a tag that describes the side effects that a procedure's application may cause. During program execution, the program refines and examines tags to identify computations that may safely execute in parallel. Heap resolution uses reference counts to dynamically detect potential heap aliases and to coordinate parallel access to shared structures. An implementation of lambda tagging and heap resolution in an optimizing ML compiler for a shared memory parallel computer demonstrates that the overhead incurred by these run-time methods is easily offset by dynamically-exposed parallelism and that non-trivial procedures can be automatically parallelized with these techniques.
- 1.A. W. Appel and D. B. MacQueen. A Standard ML compiler. Functional Programming Languages and Computer Architecture, 274:301-324, 1987. Google ScholarDigital Library
- 2.C. Chambers and D. Ungar. Customization: Optimizing compiler technology for SELF, a dynamically-typed object-oriented programming language. In A CM ${GPLAN Conference on Programming Language Design and Implementation, pages 146-160, June 1989. Google Scholar
- 3.D. R. Chase, M. Wegman, and F. K. Zadeck. Analysis of pointers and structures. In A CM SIC- PLAN Conference on Programming Language Design and Implementation, pages 296-310, June 1990. Google ScholarDigital Library
- 4.E. C. Cooper and J. G. Morrisett. Adding threads to Standard ML. Technical Report CMU-CS-90- 186, School of Computer Science, Carnegie Mellon University, December 1990.Google Scholar
- 5.R. H. Halstead, jr. Multilisp: A language for concurrent symbolic computation. A CM Transaclions on Programming Languages and Systems, 7(4):501-538, 1985. Google ScholarDigital Library
- 6.W. L. Harrison. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179-396, October 1989.Google ScholarCross Ref
- 7.L. J. Hendren and A. Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed Systems, 1(1):35-47, January 1990. Google ScholarDigital Library
- 8.S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. In A CM SIG- PLAN Conference on Programming Language Design and Implementation, June 1989. Google ScholarDigital Library
- 9.P. Jouvelot and D. K. Gifford. Algebraic reconstruction of types and effects. In Conference Record of the Eighteenth Annual A UM Symposium on Principles of Programming Languages, pages 303-310, January 1991. Google ScholarDigital Library
- 10.J. R. Larus. Compiling Lisp programs for parallel execution. Lisp and Symbolic Computation, 4:29- 99, 1991. Google ScholarDigital Library
- 11.L. Lu and M. C. Chen. Parallelizing loops with indirect array references or pointers. In Freliminary Proc. of the dth Workshop on Languages and Compilers for Parallel Computing, August 1991. Google ScholarDigital Library
- 12.J. M. Lucassen and D. K. Gifford. Polymorphic effect systems. In Conference Record of the Fifteenth Annual A CM Symposium on Principles of Programming Languages, pages 47-57, January 1988. Google ScholarDigital Library
- 13.H. G. Mairson. Deciding ML typability is complete for deterministic exponential time. In Conference Record of the Seventeenth Annual A CM Symposium on Principles of Programming Languages, pages 382-401, January 1990. Google ScholarDigital Library
- 14.R. Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17:348-375, 1978.Google ScholarCross Ref
- 15.R. Milner, M. Tofte, and R. Harper. The Definition of Standard ML. MIT Press, 1990. Google ScholarDigital Library
- 16.A. Neirynck. Static Analysis and Side Effects in Higher-Order Languages. PhD thesis, Cornell University, February 1988. Google ScholarDigital Library
- 17.J. Rees and W. Clinger (eds.). Reviseda report on the algorithmic language Scheme. SIGPLAN Notices, 21(12):37-79, December 1986. Google ScholarDigital Library
- 18.O. Shivers. Control-Flow Analysis of Higher- Order Languages. PhD thesis, CMU, May 1991. Google ScholarDigital Library
- 19.D. Tarditi, A. Acharya, and P. Lee. No assembly required: Compiling Standard ML to C. Technical Report CMU-CS-90-187, School of Computer Science, Carnegie Mellon University, November 1990.Google Scholar
- 20.P. Tinker and M. Katz. Parallel execution of sequential Scheme with Paratran. In Proceedings of the 1988 A CM Conference on LISP and Functional Programming, pages 28-39, July 1988. Google ScholarDigital Library
Index Terms
- Dynamic program parallelization
Recommendations
Dynamic program parallelization
Static program analysis limits the performance improvements possible from compile-time parallelization. Dynamic program parallelization shifts a portion of the analysis from complie-time to run-time, thereby enabling optimizations whose static ...
Hybrid parallelization and flat parallelization in HPF (high performance Fortran)
ISHPC'05/ALPS'06: Proceedings of the 6th international symposium on high-performance computing and 1st international conference on Advanced low power systemsWe have developed the HPF (High Performance Fortran) compiler HPF/SX V2 as an interface for distributed memory parallel programming. HPF is a de facto standard language for parallel programs. It is possible to write parallel programs just by inserting ...
Comments