Data-driven decomposition of sequential programs for determinate parallel execution

  • Authors:
  • Gurindar S. Sohi;Matthew David Allen

  • Affiliations:
  • The University of Wisconsin - Madison;The University of Wisconsin - Madison

  • Venue:
  • Data-driven decomposition of sequential programs for determinate parallel execution
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

The transition of the microprocessor industry to multi-core processors poses a significant challenge to the information technology industry. Realizing the full potential of these processors requires decomposition of software into units of work amenable to parallel execution. This places an enormous burden on software developers—conventional approaches to parallel programming, such as multithreading, present a programming model that is radically different from sequential programming, and may result in a wide range of execution behaviors that are neither predictable nor repeatable. These problems threaten to greatly increase the time and cost required to develop software applications. This dissertation proposes data-driven decomposition as a mechanism to overcome many of the difficulties associated with deriving parallel execution of software. Data-driven decomposition dynamically decomposes a sequential program according to the data manipulated by its constituent operations. Operations that manipulate disjoint sets of data may execute in parallel, while operations on overlapping data are serialized—executed one-at-a-time in program order—to ensure they produce the same result as a sequential execution of the program. Thus data-driven decomposition both preserves both the intuitive sequential programming interface, as well as its predictable, repeatable execution. This dissertation also describes the design and implementation of PROMETHEUS, a library comprising two components supporting data-driven decomposition of programs written in the C++ language. The first component of PROMETHEUS is a programming interface that allows programmers to express the relationship between computational operations and the data they manipulate via the widespread practices and idioms of object-oriented programming. The second component of PROMETHEUS is runtime support for efficiently orchestrating data-driven decomposition. These mechanisms allow PROMETHEUS programs to realize the benefits of data-driven decomposition, while achieving performance competitive with programs parallelized via conventional, control-driven techniques.