Papers
Topics
Authors
Recent
Search
2000 character limit reached

Disjoint-Access Parallelism Overview

Updated 14 January 2026
  • Disjoint-access parallelism is a concurrency property where operations on non-overlapping memory regions execute independently, eliminating synchronization delays.
  • It is widely applied in concurrent data structures, DSU algorithms, and array slicing to achieve near-linear speedup in parallel computing.
  • The design emphasizes strong invariants and algorithmic symmetry, ensuring race-freedom and wait-freedom in parallel execution environments.

Disjoint-access parallelism (DAP) is a concurrency property that enables multiple operations accessing non-overlapping memory regions to proceed without mutual interference or contention for shared resources. DAP admits fine-grained parallelism and is central in concurrent data structures, parallel runtime systems, and safe parallel programming models.

1. Formal Definition and Significance

The formalism of DAP requires that concurrent operations whose access sets (the set of memory cells each operation reads or writes) are disjoint, never contend for physical memory or require mutual synchronization. In the context of disjoint-set union (DSU), DAP is precisely that two Find or Union operations whose node sets are disjoint will never perform reads or writes to the same memory locations. This property ensures that if two independent computations operate on separate regions of shared data, they can proceed at the full speed of underlying hardware parallelism, incurring effectively zero synchronization overhead (Jayanti et al., 2016).

In shared-memory programming models such as SCOOP, DAP is achieved by partitioning arrays into slices with explicitly disjoint index ranges. The system guarantees that any two operations on disjoint slices access different memory addresses, enabling race-free parallel execution without locking or queueing overhead (Schill et al., 2013).

2. DAP in Concurrent Data Structures

A principal site of DAP is in parallel data structures that support operations over logically independent substructures. In the DSU problem, DAP ensures that concurrently invoked Find and Union operations on elements from separate sets can execute in parallel without communication or synchronization. The algorithm by Jayanti and Tarjan achieves DAP by associating each operation with the memory cells along its search (root-to-leaf) path and proving that for disjoint trees these paths do not intersect (Jayanti et al., 2016).

The classic wait-free DSU algorithm assigns each tree in the forest a random priority and stores parent pointers in a flat array. If operations access non-overlapping trees, their parent-pointer ranges are disjoint, and their only memory accesses are to these local regions. Similarly, in parallel programming with arrays, DAP is enforced by the runtime ensuring that slices given to distinct processors have disjoint index ranges and thus operate on non-overlapping memory (Schill et al., 2013).

3. Algorithmic Design for DAP

Achieving DAP requires both careful construction of the data structure and algorithmic symmetry between logical and physical independence.

In the DSU context, the randomized algorithm works as follows:

  • Each element ii has a parent pointer and a random priority prio[i]prio[i] (assigned uniformly in [0,1][0,1] and used to maintain random-priority trees).
  • Union always links the root with lower priority to the root with higher priority.
  • Find(x) proceeds in two phases: a root-seeking loop scans parent pointers until a root is found, followed by a single upward path-compression pass with compare-and-swap (CAS) to flatten the path.
  • If two operations operate on disjoint trees, all their reads, writes, and CAS operations are to separate memory, effecting DAP.

In the SCOOP model, slices are objects characterizing index intervals over the array. The DAP property is ensured as the runtime restricts access by assigning each slice to a distinct thread—since their index sets do not overlap, no two threads race for the same address (Schill et al., 2013).

4. Invariants, Safety, and Wait-freedom

Crucial to DAP is the maintenance of invariants that guarantee independence and safety. In the concurrent DSU (Jayanti et al., 2016):

  • Priorities on parent pointers are monotonic: prio[parent[v]]prio[v]prio[parent[v]] \geq prio[v].
  • CAS failures (contention) occur only if a higher-priority parent is installed.
  • Path compression and parent changes respect independence, and with the independence of priorities, the algorithm is analytically decoupled.

Similarly, the slice model enforces:

  • Disjointness invariant: SpSq, Sp.upper<Sq.lowerSq.upper<Sp.lower    Sp.indexesSq.indexes=\forall S_p \neq S_q,\ S_p.upper < S_q.lower \vee S_q.upper < S_p.lower \implies S_p.indexes \cap S_q.indexes = \emptyset.
  • Modifiability invariant: A slice is writable if and only if it has zero readers; active reader views disable writers, preventing write-read races.
  • Address calculations ensure that operations on distinct slices always map to distinct memory addresses (Schill et al., 2013).

Both systems thus guarantee race-freedom, wait-freedom (in DSU: every operation finishes in a bounded number of steps), and DAP.

5. Performance Analysis and Scalability

The DAP property, by minimizing (to zero) synchronization between disjoint accesses, leads to near-linear speedup for workloads in which processes operate independently.

In the randomized DSU algorithm, with nn elements, mm operations, and pp processes, the expected total work is:

E[work]=Θ(m(α(n,m/(np))+log(np/m+1)))\mathbb{E}[\text{work}] = \Theta \left( m \cdot \left( \alpha(n, m/(np)) + \log(np/m + 1) \right) \right)

(α(n,)\alpha(n,\cdot): inverse Ackermann function). Each operation requires O(logn)O(\log n) steps with high probability. When disjoint operations dominate (high-load regimes), the α\alpha and logarithmic terms become negligible, and speedup approaches O(p)O(p) (Jayanti et al., 2016).

Empirical benchmarks in parallel array algorithms show that SCOOP's slicing-based DAP approach matches thread-based implementations within 5% overhead, with scalability up to 32 cores (Schill et al., 2013):

Program 1 core 2 cores 4 cores 8 cores 16 cores 32 cores
Quicksort (slicing) 157.4 147.1 81.9 66.4 59.9 59.2
Quicksort (threads) 158.6 145.1 82.8 68.0 61.5 59.8
MatMul (slicing) 184.8 95.0 51.2 24.0 14.1 7.3
MatMul (threads) 178.0 91.7 46.6 23.6 12.6 7.3

Both lines exhibit efficient scaling and indistinguishable overhead from pure-threaded approaches.

6. Theoretical and Practical Implications

DAP exposes the full bandwidth of parallel hardware when the access patterns are naturally disjoint. In practice, this means that parallel jobs on non-overlapping subsets of a shared data structure, such as union-find sets or array partitions, can be scheduled and executed with no explicit synchronization. Experimental results from (Jayanti et al., 2016) and (Schill et al., 2013) confirm that in such cases near-maximal processor utilization is achieved, with real-world performance bounded only by core count rather than software overheads.

In the presence of overlapping operations or non-disjoint memory access, both approaches degrade gracefully, incurring contention only on the overlapping region and maintaining wait-freedom or correct serialization.

The successful realization of DAP rests on enforcing strong invariants about access sets, independence of randomization (where used), and careful mapping from logical disjointness to physical memory disjointness. These principles generalize to other concurrent objects, transactional memories, and parallel runtime designs.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (2)

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to Disjoint-Access-Parallelism.