On the Complexity of Event Ordering for Shared-Memory Parallel Program Executions
نویسندگان
چکیده
This paper presents results on the complexity of computing event orderings for sharedmemory parallel program executions. Given a program execution, we formally define the problem of computing orderings that the execution must have exhibited or could have exhibited, and prove that computing such orderings is an intractable problem. We present a formal model of a shared-memory parallel program execution on a sequentially consistent processor, and discuss event orderings in terms of this model. Programs are considered that use fork/join and either counting semaphores or event style synchronization. We define a feasible program execution to be an execution of the program that performs the same events as an observed execution, but which may exhibit different orderings among those events. Any program execution exhibiting the same data dependences among the shared data as the observed execution is feasible. We define several relations that capture the orderings present in all (or some) of these feasible program executions. The happened-before, concurrent-with, and ordered-with relations are defined to show events that execute in a certain order, that execute concurrently, or that execute in either order but not concurrently. Each of these ordering relations is defined in two ways. In the must-have sense they show the orderings that are guaranteed to be present in all feasible program executions, and in the could-have sense they show the orderings that could potentially occur in at least one feasible program execution due to timing variations. We prove that computing any of the must-have ordering relations is a co-NP-hard problem and that computing any of the could-have ordering relations is an NP-hard problem.
منابع مشابه
Restructuring Parallel Programs for On-the-Fly Race Detection
Detecting races is important for debugging explicit shared-memory parallel programs, because the races result in unintended non-deterministic executions of the programs. Previous on-they techniques to detect races in parallel programs with inter-thread coordination show serious space overhead in two components of complexity, and can not guarantee that, in an execution instance, the race detecte...
متن کاملVerifying Robustness of Event-Driven Asynchronous Programs Against Concurrency
We define a correctness criterion, called robustness against concurrency, for a class of event-driven asynchronous programs that are at the basis of modern UI frameworks in Android, iOS, and Javascript. A program is robust when all possible behaviors admitted by the program under arbitrary procedure and event interleavings are admitted even if asynchronous procedures (respectively, events) are ...
متن کاملSimulation of Parallel Computer Systems on a Shared-Memory Multiprocessor
This paper describes an object oriented simulator model for parallel computer systems that is designed for a shared memory multiprocessor and uses the principle of execution driven simulation. We present and evaluate two alternatives for structuring the simulation. The first of these uses a single shared event list object and treats all processes uniformly. In the second, we represent the paral...
متن کاملAnalysis of Event Synchronization in Parallel Programs
The increase in the number and complexity of parallel programs has led to a need for better approaches for synchronization error detection and debugging of parallel programs. This paper presents an efficient and precise algorithm for the detection of nondeterminacy (race conditions) in parallel programs. Nondeterminacy exists in a program when the program yields different outputs for different ...
متن کاملTrace Size vs. Parallelism in Trace-and-Replay Debugging of Shared-Memory Programs
Execution replay is a debugging strategy where a program is run over and over on an input that manifests bugs. For explicitly parallel shared-memory programs, execution replay requires support of special tools — because these programs can be nondeterministic, their executions can differ from run to run on the same input. For such programs, executions must be traced before they can be replayed f...
متن کامل