Monday, April 8, 2013

Eliminating book-keeping using locks

In an earlier experiment, Adam and Jan showed that eliminating the book-keeping data structure Changeset that encodes object graph transformations caused the parallel interpreter to become non-deterministic. Adam realized that the non-deterministic behavior was likely caused by data races during concurrent updates of the Acumen heap. A fix was implemented using locks to sequentialize updates to the object graph. Indeed, this removed the non-deterministic behavior and Adam then proceeded to remove the book-keeping from the Changeset data structure all together, reducing it to a simple flag, indicating whether the discrete update fix point computation has been reached. As a result, the implementation of the parallel interpreter was simplified and as a bonus an average 5-10% speedup was observed during benchmarking. An additional benefit is that the resulting interpreter is more suitable for implementation in imperative languages.