A Tree Clock Data Structure for Causal Orderings in Concurrent Executions
Umang Mathur, Andreas Pavlogiannis, H\"unkar Can Tun\c{c}, Mahesh Viswanathan

TL;DR
This paper introduces tree clocks, a new data structure that improves the efficiency of computing causal orderings in concurrent program executions, outperforming vector clocks especially with many threads.
Contribution
The paper presents tree clocks, a novel data structure that reduces the computational complexity of causal ordering operations in concurrent analysis.
Findings
Tree clocks are asymptotically optimal for happens-before order.
Replacing vector clocks with tree clocks speeds up analysis by up to 3x.
Tree clocks can compute multiple partial orders, demonstrating versatility.
Abstract
Dynamic techniques are a scalable and effective way to analyze concurrent programs. Instead of analyzing all behaviors of a program, these techniques detect errors by focusing on a single program execution. Often a crucial step in these techniques is to define a causal ordering between events in the execution, which is then computed using vector clocks, a simple data structure that stores logical times of threads. The two basic operations of vector clocks, namely join and copy, require time, where is the number of threads. Thus they are a computational bottleneck when is large. In this work, we introduce tree clocks, a new data structure that replaces vector clocks for computing causal orderings in program executions. Joining and copying tree clocks takes time that is roughly proportional to the number of entries being modified, and hence the two operations do not…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed systems and fault tolerance · Logic, programming, and type systems
