Dynamic Determinism Checking for Structured Parallelism
نویسندگان
چکیده
Determinism is a powerful property, making it much easier to design, implement, and debug parallel programs when it can be guaranteed. There has been much work on guaranteeing determinism of programs, both through dynamic and static approaches. The dynamic approaches tend to have high overheads, while the static approaches can be difficult for non-experts to understand and can require high programmer effort in the form of typing annotations and code restructuring to fit the static type system. In this work, we present a compiler and runtime system that ensures determinism of application code, assuming that libraries satisfy their determinism specifications. In our system, the library writer includes determinism specifications in the form of annotations on the methods in the library. When these libraries are used by application programmers, our compiler will insert dynamic checks where necessary to ensure determinism at runtime. We demonstrate that our inserted dynamic checks lead to an average (geometric mean) slowdown of only 1.26× on 16 cores for our benchmark, thereby establishing the practicality of our approach.
منابع مشابه
Symbolic Model Checking for Asynchronous Boolean Programs
Software model checking problems generally contain two different types of non-determinism: 1) non-deterministically chosen values; 2) the choice of interleaving among threads. Most modern software model checkers can handle only one source of non-determinism efficiently, but not both. This paper describes a SAT-based model checker for asynchronous Boolean programs that handles both sources effec...
متن کاملA Type and Effect System for Determinism in Multithreaded Programs
There has been much recent interest in supporting deterministic parallelism in imperative programs. Structured parallel programming models have used type systems or static analysis to enforce determinism by constraining potential interference of lexically scoped tasks. But similar support for multithreaded programming, where threads may be ubiquitously spawned with arbitrary lifetimes, especial...
متن کاملUsing Model Checking Techniques for Symbolic Synthesis of Distributed Programs
Given the non-determinism and race conditions in distributed programs, the ability to provide assurance about them is crucial. Our work focuses on incremental synthesis where we modify existing (fault-intolerant) distributed programs to add fault-tolerance. We concentrate on reducing the complexity of such synthesis using techniques –symmetry and parallelism— from model checking. We apply these...
متن کاملAn Effect System and Language for Deterministic - by - Default Parallel Programming
This thesis presents a new, Java-based object-oriented parallel language called Deterministic Parallel Java (DPJ). DPJ uses a novel effect system to guarantee determinism by default. That means that parallel programs are guaranteed to execute deterministically unless nondeterminism is explicitly requested. This is in contrast to the shared-memory models in widespread use today, such as threads ...
متن کاملIsolating Determinism in Multi-threaded Programs
Futures are a program abstraction that express a simple form of fork-join parallelism. The expression future (e) declares that e can be evaluated concurrently with the future’s continuation. Safe-futures provide additional deterministic guarantees, ensuring that all data dependencies found in the original (non-future annotated) version are respected. In this paper, we present a dynamic analysis...
متن کامل