Magistracy Department of Donetsk National Technical University

Computer science faculty

Department of applied mathematics and informatics

Parallel programming patterns

Overview and characteristics

Application

Links

Automated systems software specialty

Individual task

Parallel programming patterns

Russian version

Parallel programming is difficult, thus design patterns.

Despite rapid advances in parallel hardware performance, the full potential of processing power is not being exploited in the community for one clear reason: difficulty of designing parallel software. Identifying tasks, designing parallel algorithm, and managing the balanced load among the processing units has been a daunting task for novice programmers, and even the experienced programmers are often trapped with design decisions that underachieve in potential peak performance.

Over the last decade there have been several approaches in identifying common patterns that are repeatedly used in parallel software design process. Documentation of these “design patterns” helps the programmers by providing:

  • definition
  • solution
  • guidelines for common parallelization problems

The current parallel patterns prove to be ineffective.

In practice, however, the parallel design patterns identified thus far [over the last two decades!] contribute little—if none at all—to development of non-trivial parallel software. In short, the parallel design patterns are too trivial and fail to give detailed guidelines for specific parameters that can affect the performance of wide range of complex problem requirements.

By experience in the community, it is coming to a consensus that there is only limited number of patterns:

  • Pipeline
  • Master and Slave
  • Divide and Conquer
  • Geometric Decomposition
  • Replicable
  • Repository

So far the community efforts were focused on discovering more design patterns, but new patterns vary a little and fall into range that is not far from one of the patterns mentioned above. The source of ineffectiveness of these patterns, in fact, does not come from its lack of variety, but it comes from inflexibility of how existing patterns are presented.

Literature:
Separation of Concerns in Parallel Patterns / Resources on Parallel Patterns (PDF, DOC)
Source: Resources on Parallel Patterns / Pattern Collection / Separation of Concerns in Parallel Patterns

Main page