Abstract

<par>This paper studies the problem of efficiently schedulling fully strict (i.e., well-structured) multithreaded computations on parallel computers. A popular and practical method of scheduling this kind of dynamic MIMD-style computation is &ldquo;work stealing,&rdquo; in which processors needing work steal computational threads from other processors. In this paper, we give the first provably good work-stealing scheduler for multithreaded computations with dependencies.</par><par>Specifically, our analysis shows that the expected time to execute a fully strict computation on <italic>P</italic> processors using our work-stealing scheduler is <italic>T</italic><subscrpt>1</subscrpt>/<italic>P</italic> + <italic>O</italic>(<italic>T</italic><subscrpt><inline-equation> <f> &infin; </f></inline-equation></subscrpt>, where <italic>T</italic><subscrpt>1</subscrpt> is the minimum serial execution time of the multithreaded computation and (<italic>T</italic><subscrpt><inline-equation> <f> &infin;</f></inline-equation></subscrpt> is the minimum execution time with an infinite number of processors. Moreover, the space required by the execution is at most <italic>S</italic><subscrpt>1</subscrpt><italic>P</italic>, where <italic>S</italic><subscrpt>1</subscrpt> is the minimum serial space requirement. We also show that the expected total communication of the algorithm is at most <italic>O</italic>(<italic>PT</italic><subscrpt><inline-equation> <f> &infin;</f> </inline-equation></subscrpt>( 1 + <italic>n<subscrpt>d</subscrpt></italic>)<italic>S</italic><subscrpt>max</subscrpt>), where <italic>S</italic><subscrpt>max</subscrpt> is the size of the largest activation record of any thread and <italic>n<subscrpt>d</subscrpt></italic> is the maximum number of times that any thread synchronizes with its parent. This communication bound justifies the folk wisdom that work-stealing schedulers are more communication efficient than their work-sharing counterparts. All three of these bounds are existentially optimal to within a constant factor.</par>

Links and resources

Tags