Turning nondeterminism into parallelism

Omer Tripp, Eric Koskinen, Mooly Sagiv

Research output: Contribution to journalArticlepeer-review


Nondeterminism is a useful and prevalent concept in the design and implementation of software systems. An important property of nondeterminism is its latent parallelism: A nondeterministic action can evaluate to multiple behaviors. If at least one of these behaviors does not conflict with concurrent tasks, then there is an admissible execution of the action in parallel with these tasks. Unfortunately, existing implementations of the atomic paradigm-optimistic as well as pessimistic-are unable to fully exhaust the parallelism potential of nondeterministic actions, lacking the means to guide concurrent tasks toward nondeterministic choices that minimize interference. This paper investigates the problem of utilizing parallelism due to nondeterminism. We observe that nondeterminism occurs in many real-world codes. We motivate the need for devising coordination mechanisms that can utilize available nondeterminism. We have developed a system featuring such mechanisms, which leverages nondeterminism in a wide class of query operations, allowing a task to look into the future of concurrent tasks that mutate the shared state during query evaluation and reduce conflict accordingly. We evaluate our system on a suite of 12 algorithmic benchmarks of wide applicability, as well as an industrial application. The results are encouraging.

Original languageEnglish
Pages (from-to)589-604
Number of pages16
JournalACM SIGPLAN Notices
Issue number10
StatePublished - Oct 2013


  • Concurrency control
  • Nondeterminism
  • Parallelism
  • Serializability
  • Synchronization


Dive into the research topics of 'Turning nondeterminism into parallelism'. Together they form a unique fingerprint.

Cite this