On-the-fly maintenance of series-parallel relationships in fork-join multithreaded programs
On-the-fly maintenance of series-parallel relationships in fork-join multithreaded programs
复制标题
动态维护 fork-join 多线程程序中的串并关系
DOI:
10.1145/1007912.1007933
复制
发表时间:
2004
期刊:
影响因子:
--
通讯作者:
C. Leiserson
中科院分区:
文献类型:
--
作者:
M. A. Bender;Jeremy T. Fineman;Seth Gilbert;C. Leiserson
A key capability of data-race detectors is to determine whether one thread executes logically in parallel with another or whether the threads must operate in series. This paper provides two algorithms, one serial and one parallel, to maintain series-parallel (<b><i>SP</i></b>) relationships "on the fly" for fork-join multithreaded programs. The serial <b><i>SP-order</i></b> algorithm runs in <i>O</i>(1) amortized time per operation. In contrast, the previously best algorithm requires a time per operation that is proportional to Tarjan's functional inverse of Ackermann's function. SP-order employs an order-maintenance data structure that allows us to implement a more efficient "English-Hebrew" labeling scheme than was used in earlier race detectors, which immediately yields an improved determinacy-race detector. In particular, any fork-join program running in <i>T</i><inf>1</inf> time on a single processor can be checked on the fly for determinacy races in <i>O</i>(<i>T</i><inf>1</inf>) time. Corresponding improved bounds can also be obtained for more sophisticated data-race detectors, for example, those that use locks.By combining SP-order with Feng and Leiserson's serial <b><i>SP-bags</i></b> algorithm, we obtain a parallel SP-maintenance algorithm, called <b><i>SP-hybrid</i></b>. Suppose that a fork-join program has <i>n</i> threads, <i>T</i><inf>1</inf> work, and a critical-path length of <i>T</i><inf>∞</inf>. When executed on <i>P</i> processors, we prove that SP-hybrid runs in <i>O</i>((<i>T</i><inf>1</inf>/<i>P</i> +<i>PT,/i>∞)lg <i.n</i>) expected time. To understand this bound, consider that the original program obtains linear speed-up over a 1-processor execution when <i>P</i>=<i>O</i>(<i>T</i><inf>1</inf>T<inf>∞</inf>). In contrast, SP-hybrid obtains linear speed-up when <i>P</i>=<i>O</i>(√<i>T</i><inf>1</inf><i>T</i><inf>∞</inf>), but the work is increased by a factor of <i>O</i>(lg <i>n</i>).