The Case For Merging Execution- and Language-level Determinism with MELD

Joseph Devietti, Dan Grossman, Luís Ceze · 2012

Nondeterminism is a key contributor to the difficulty of parallel programming. Many research projects have shown how to provide deterministic parallelism, but with unfortunate trade-offs. Deterministic execution enforces determinism for arbitrary programs but with significant runtime cost, while deterministic languages enforce determinism statically (without runtime overhead) but only for fork-join programs expressible in their static type systems. MELD unifies these approaches. We explain the requirements for soundly integrating a deterministic language into a deterministic execution system, and describe a simple qualifier-based type checker that ensures isolation for code written in a deterministic language. We also extend MELD to incorporate nondeterministic operations without compromising the determinism of the rest of the program. Our experiments with benchmarks from the SPLASH2 and PAR-SEC suites show that a small number of annotations can accelerate the performance of deterministic versions of these programs by 2-6x. 1.

Read the paper · More papers on PaperTik