Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
An approach to debugging task-parallel programs
Publisher:
  • The University of Iowa
ISBN:978-0-591-71537-8
Order Number:AAI9819975
Pages:
171
Reflects downloads up to 06 Oct 2024Bibliometrics
Skip Abstract Section
Abstract

The dynamic behavior of parallel programs is significantly more complicated than that of sequential programs. Not only does the size of program state grow linearly with the number of processors, but the size of the state space grows exponentially. Furthermore, process interactions are inherently nondeterministic. Any factor that influences the outcome of these nondeterminacies can change the course of the entire computation. Many debugging techniques are iterative and rely on repeatability of execution. These facts make debugging parallel programs an arduous task, at best.

In this work we examine how to handle nondeterminacy in task-parallel execution, in order to produce correct programs. Previous work in debugging parallel programs has focused on providing deterministic replay of a recorded execution. Furthermore, due to intrusion caused by recording an execution, it can not be known if all possible executions can be recorded. This thesis addresses the question of how a programmer can explore the space of possible executions, in the presence of nondeterminacies and intrusion.

We present a general task-parallel execution model and discuss the class of programming paradigms that map to it. From the framework of this execution model analytical models are developed that allow the programmer to fully explore the execution space. The central model is a lattice of all potential consistent global states. Any particular execution describes a sub-lattice. These models are exploited in the development of debugging mechanisms to address the inherent nondeterminism in task-parallel programs.

The two most notable of these debugging mechanisms are: a unique definition of parallel breakpoints and the means to derive an interesting execution from the recorded execution. Breakpoints can be set at any state of a recorded execution that may occur. The presence of a breakpoint will influence the course of the replayed execution, guaranteeing that the state will be reached without violating dependencies dictated by the recorded execution. In order to derive an execution the programmer can guide the execution through the resolution of key nondeterminacies. This new, derived execution can subsequently be replayed. This process can be iterated allowing the programmer to derive any possible execution.

Contributors
  • University of Iowa
  • University of Iowa

Recommendations