Reusable and Extensible High Level Data Distributions

Abstract

This paper presents a reusable design of a data distribution framework for data parallel high performance applications. Distributions are a means to express locality in systems composed of large numbers of processor and memory components connected by a network. Since distributions have a great effect on the performance of applications, it is important that the distribution strategy is flexible, so its behavior can change depending on the needs of the application. At the same time, high productivity concerns require that the user is shielded from error-prone, tedious details such as communication and synchronization. We propose an approach to distributions that enables a user to refine a distribution type and adjust it to optimize the performance of the application. Additionally, the low-level communication and synchronization details are concealed from a programmer, resulting in increased productivity. To emphasize the generality of our distribution machinery, we present its abstract design in the form of a design pattern, which is independent of a concrete implementation. To illustrate the applicability of our distribution framework design, we outline the implementation of data distributions in terms of the Chapel high productivity programming language.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Jan 01, 2005
Accession Number
ADA437342

Entities

People

  • Bradford Chamberlain
  • Hans P. Zima
  • Mark L. James
  • Roxana E. Diaconescu

Organizations

  • California Institute of Technology

Tags

DTIC Thesaurus Topics

  • Abstracts
  • Algorithms
  • Compilers
  • Computations
  • Computer Languages
  • Computer Programming
  • Computer Programs
  • Computers
  • Computing System Architectures
  • Concrete
  • High Level Languages
  • High Performance Computing
  • Jet Propulsion
  • Language
  • Productivity
  • Programming Languages
  • Standards

Fields of Study

  • Computer science

Readers

  • Parallel and Distributed Computing.
  • Regression Analysis.
  • Software Engineering.