Curare: Restructuring Lisp Programs For Concurrent Execution

James R Larus

This paper describes the techniques used by CURARE, a program transformer, to restructure Lisp programs for concurrent execution in multiprocessor Lisp systems. CURARE tries to eliminate control and data-dependencies that prevent concurrent execution of the invocations of recursive functions. CURARE also inserts a variety of synchronization devices to ensure that unremovable dependencies do not impair execution of a program. The product of this process is semantically equivalent to the original Lisp program, but executes faster on a multiprocessor than would the original program.

BibTeX citation:

@techreport{Larus:CSD-87-344,
Author = {Larus, James R},
Title = {Curare: Restructuring Lisp Programs For Concurrent Execution},
Institution = {EECS Department, University of California, Berkeley},
Year = {1987},
Month = {Feb},
URL = {http://www.eecs.berkeley.edu/Pubs/TechRpts/1987/5364.html},
Number = {UCB/CSD-87-344},
Abstract = {This paper describes the techniques used by CURARE, a program transformer, to restructure Lisp programs for concurrent execution in multiprocessor Lisp systems. CURARE tries to eliminate control and data-dependencies that prevent concurrent execution of the invocations of recursive functions. CURARE also inserts a variety of synchronization devices to ensure that unremovable dependencies do not impair execution of a program. The product of this process is semantically equivalent to the original Lisp program, but executes faster on a multiprocessor than would the original program.}
}