Date of Original Version
Abstract or Description
This paper presents three novel language implementation primitives—lazy threads, stacklets, and synchronizers—andshows how they combine to provide a parallel call at nearly the efficiency of a sequential call. The central idea is to transform parallel calls into parallel-ready sequential calls. Excess parallelism degrades into sequential calls with the attendant efficient stack management and direct transfer of control and data, unless a call truly needs to execute in parallel, in which case it gets its own thread of control. We show how these techniques can be applied to distribute work efficiently on multiprocessors.
Third Workshop on Languages, Compilers, and Run-Time Systems for Scalable Computers.