Space-Efficient Scheduling of Parallelism with Synchronization Variables
journal contributionposted on 01.01.1983, 00:00 authored by Guy E. Blelloch, Phillip P. Gibbons, Yossi Matias, Girija Narlikar
Recent work on scheduling algorithms has resulted in provable bounds on the space taken by parallel computations in relation to the space taken by sequential computations. The results for online versions of these algorithms, however, have been limited to computations in which threads can only synchronize with ancestor or sibling threads. Such computations do not include languages with futures or user-specified synchronization constraints. Here we extend the results to languages with synchronization variables. Such languages include languages with futures, such as Multilisp and Cool, as well as other languages such as ID. The main result is an online scheduling algorithm which, given a computation with w work (total operations), s synchronizations, d depth (critical path) and S1 sequential space, will run in O(w/p + s log (pd)/p + d log (p d)) time and S1 + O(p d log (p d)) space, on a p-processor CRCW PRAM with a fetch-and-add primitive. This includes all time and space costs for both the computation and the scheduler. The scheduler is non-preemptive in the sense that it will only move a thread if the thread suspends on a synchronization, forks a new thread, or exceeds a threshold when allocating space. For the special case where the computation is a planar graph with left-to-right synchronization edges, the scheduling algorithm can be implemented in O(w/p + d log p) time and S1 + O(p d log p) space. These are the first non-trivial space bounds described for such languages.