Indolent Closure Creation
Volker Strumpen · DSpace@MIT (Massachusetts Institute of Technology) · 1998
A closure is a representation of a thread in memory, ready to be executed. The goal of this work is to create portable closures that can be transferred across binary incompatible architectures. Consequently, indolent closures are software-implemented, and rely on a copy mechanism which allows for potential data representation conversion on-the-fly. Indolent closure creation optimizes the current implementation of the algorithmic multithreaded language Cilk. Rather than generating parallelism eagerly by pushing closures on a ready deque whenever a parallel spawn occurs, indolent closures are created only if the ready deque is empty and a steal request occurs. Indolent closure creation is based on the release-andresume transformation, developed for the portable checkpoint compiler porch. Experimental results on various architectures show that indolent closure creation reduces the cost of a parallel spawn to be competitive with the cost of a sequential function call.