Refreshments 3:20 p.m.
Abstract
Building applications that are responsive and can exploit parallel hardware poses an important challenge for developers. In particular, enabling applications to execute various tasks in parallel can be difficult if those tasks exhibit read and write conflicts. We introduce a novel deterministic programming model based on "concurrent revisions" to simplify this problem. Revisions are forked and joined much like asynchronous tasks. However, rather than interleaving accesses to shared memory, revisions execute on a fully isolated (conceptual) copy of the entire shared state. Any changes to shared state become globally effective at the moment the revision is joined only. Also, at that point of time, any write-write conflicts get resolved deterministically.
To demonstrate the practical viability of our approach, we developed an efficient algorithm and an implementation in the form of a C# library, and used it to parallelize an interactive game application. Our results show that the parallelized game, while simple and very similar to the original sequential game, achieves satisfactory speedups on a multicore processor.