The objective of this project is to investigate version consistency, a new concurrent programming consistency model, as a means of enhancing the performance and scalability of concurrent systems. Under version consistency, which can be seen as a relaxation of release consistency, processes are guaranteed to see the same memory contents (only) if they are accessing the same version of the memory. Such versions are created, retrieved and/or merged through calls analogous with version control systems for source code.
An important class of applications that benefits substantially from version consistency is deterministic concurrency runtimes, where the goal is to ensure that a program produces the same output given the same input, independent of any non-deterministic timing effects. In prior work, the PI achieved up to 50% performance gain for the deterministic runtime DThreads, using version consistency. In this project, one of the goals is to achieve ``pthreads parity" for a deterministic runtime, where enforcing determinism incurs only negligible performance impact. When and if this is achieved, ``determinism by default'' becomes a feasible option for mainstream computer systems.
As computer processors continue to evolve from a centralized single ``core'' architecture to highly distributed and parallel ``multi-core systems'', writing correct programs that make efficient use of this extremely powerful hardware is becoming increasingly difficult. This results in a number of detrimental effects ranging from poor resource utilization, to seriously flawed programs where loss of data, or even loss of life may result. This project investigates (a) a means of reducing the complexity of programming highly parallel systems to combat these problems, and (b) a means of guaranteeing that even an incorrect parallel program produces the same result every time. This latter part will help programmers write correct programs, and to fix software flaws that may otherwise be intermittent and difficult to identify.