More Patterns for Parallel Application Programs
Berna L. Massingill, Timothy G. Mattson, Beverly A. Sanders · 2001
We are involved in an effort to develop a pattern language for parallel application programs. The pattern language consists of a set of patterns that guide the programmer through the entire process of developing a parallel program, including patterns that help find the concurrency in the problem, patterns that help find the appropriate algorithm structure to exploit the concurrency in parallel execution, and patterns describing lower-level implementation issues. The current version of the pattern language can be seen at http://www.cise.ufl.edu/ research/ParallelPatterns. In this paper, we present three patterns from our pattern language, selected from the set of patterns that are used after the problem has been analyzed to identify the exploitable concurrency. ChooseStructure addresses the question of how to select an appropriate pattern from the others in this set. DivideAndConquer is used when the problem can be solved by recursively dividing it into subproblems, solving each subproblem independently, and then recombining the subsolutions into a solution to the original problem. PipelineProcessing is used when the problem can be decomposed into ordered groups of tasks connected by data dependencies.