Issue No. 10 - October (1997 vol. 23)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/32.637147
<p><b>Abstract</b>—A vector clock is a valuable tool for maintaining run-time concurrency information in parallel programs. In this paper a new method is presented for modifying vector clocks to make them suitable for programs with nested fork-join parallelism (having a variable number of tasks). The resulting kind of clock is called a clock tree, due to its tree structure. The clock tree method compares favorably with other timestamping methods for variable parallelism: task identifier reuse and task recycling. The worst case space requirements of clock trees equals the best case for the latter two methods, and the average size of a clock tree is much smaller than the size of a vector with task recycling. Furthermore, the algorithm for maintaining clock trees does not require a shared data structure and thus avoids the serialization bottleneck that task recycling suffers from.</p>
Logical time, vector clocks, Lamport clocks, nested fork-join parallelism, event labeling.
Koenraad Audenaert, "Clock Trees: Logical Clocks for Programs with Nested Parallelism", IEEE Transactions on Software Engineering, vol. 23, no. , pp. 646-658, October 1997, doi:10.1109/32.637147