Executing Dynamic Task Graphs Using Work-Stealing


Nabbit is a work-stealing library for executing dynamic task graphs with arbitrary dependencies. We prove that Nabbit achieves asymptotically optimal performance for task graphs whose nodes have constant in-degree and out-degree. We have implemented Nabbit in the multithreaded programming language Cilk++. Since the implementation of Nabbit required no modification to the Cilk++ runtime system, it should not be hard to port it to other fork-join languages and libraries. In order to evaluate the performance of Nabbit, we implemented a dynamic program representing the Smith-Waterman algorithm, an irregular dynamic program on a two-dimensional grid which is used in computational biology. Our experiments indicate that when task-graph nodes are mapped to reasonably sized blocks, Nabbit exhibits low overhead and scales as well as or better than other scheduling strategies. In some cases, the Nabbit implementation even manages to outperform a divide-and-conquer

7 Figures and Tables

Cite this paper

@inproceedings{Agrawal2010ExecutingDT, title={Executing Dynamic Task Graphs Using Work-Stealing}, author={Kunal Agrawal and Charles E. Leiserson and Jim Sukha}, year={2010} }