Date Added: Apr 2010
Multicore shared-memory architectures are becoming prevalent but bring many programming challenges. Among the biggest is non-determinism: the output of the program does not depend merely on the input, but also on scheduling choices taken by the operating system. In this paper, the authors discuss and propose additional tools that provide determinism guarantees - compilers that generate deterministic code, libraries that provide deterministic constructs, and analyzers that check for determinism. Additionally, they discuss techniques to check for problems like deadlock that can result from the use of these deterministic constructs.