Clock Trees: Logical Clocks for Programs with Nested Parallelism

  • Authors:
  • Koenraad Audenaert

  • Affiliations:
  • Univ. of Ghent, Ghent, Belgium

  • Venue:
  • IEEE Transactions on Software Engineering
  • Year:
  • 1997

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.