Results 1 - 10
of
10
Using Generative Design Patterns to Generate Parallel Code for a Distributed Memory Environment
, 2003
"... A design pattern is a mechanism for encapsulating the knowledge of experienced designers into a re-usable artifact. Parallel design patterns reflect commonly occurring parallel communication and synchronization structures. Our tools, CO 2 P 3 S (Correct Object-Oriented Pattern-based Parallel Program ..."
Abstract
-
Cited by 27 (9 self)
- Add to MetaCart
A design pattern is a mechanism for encapsulating the knowledge of experienced designers into a re-usable artifact. Parallel design patterns reflect commonly occurring parallel communication and synchronization structures. Our tools, CO 2 P 3 S (Correct Object-Oriented Pattern-based Parallel Programming System) and MetaCO 2 P 3 S, use generative design patterns. A programmer selects the parallel design patterns that are appropriate for an application, and then adapts the patterns for that specific application by selecting from a small set of code-configuration options. CO 2 P 3 S then generates a custom framework for the application that includes all of the structural code necessary for the application to run in parallel. The programmer is only required to write simple code that launches the application and to fill in some applicationspecific sequential hook routines. We use generative design patterns to take an application specification (parallel design patterns + sequential user code) and use it to generate parallel application code that achieves good performance in shared memory and distributed memory environments. Although our implementations are for Java, the approach we describe is tool and language independent. This paper describes generalizing CO 2 P 3 S to generate distributed-memory parallel solutions.
Patterns for Parallel Application Programs
, 1999
"... We are involved in an ongoing effort to design 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 pro ..."
Abstract
-
Cited by 21 (5 self)
- Add to MetaCart
We are involved in an ongoing effort to design 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.
Generating Parallel Program Frameworks from Parallel Design Patterns
, 2000
"... . Object-oriented programming, design patterns, and frameworks are abstraction techniques that have been used to reduce the complexity of sequential programming. The CO2P3S parallel programming system provides a layered development process that applies these three techniques to the more difficult ..."
Abstract
-
Cited by 13 (7 self)
- Add to MetaCart
. Object-oriented programming, design patterns, and frameworks are abstraction techniques that have been used to reduce the complexity of sequential programming. The CO2P3S parallel programming system provides a layered development process that applies these three techniques to the more difficult domain of parallel programming. The system generates correct frameworks from pattern template specifications at the highest layer and provides performance tuning opportunities at lower layers. Each of these features is a solution to a major problem with current parallel programming systems. This paper describes CO2P3S and its highest level of abstraction using an example program to demonstrate the programming model and one of the supported pattern templates. Our results show that a programmer using the system can quickly generate a correct parallel structure. Further, applications built using these structures provide good speedups for a small amount of development effort. 1 Introd...
Generative Design Patterns
- 17th IEEE International Conference on Automated Software Engineering (ASE
, 2002
"... A design pattern encapsulates the knowledge of object-oriented designers into re-usable artifacts. A design pattern is a descriptive device that fosters software design re-use. There are several reasons why design patterns are not used as generative constructs that support code re-use. The first rea ..."
Abstract
-
Cited by 13 (6 self)
- Add to MetaCart
A design pattern encapsulates the knowledge of object-oriented designers into re-usable artifacts. A design pattern is a descriptive device that fosters software design re-use. There are several reasons why design patterns are not used as generative constructs that support code re-use. The first reason is that design patterns describe a set of solutions to a family of related design problems and it is difficult to generate a single body of code that adequately solves each problem in the family. A second reason is that it is difficult to construct and edit generative design patterns. A third major impediment is the lack of a tool-independent representation. A common representation could lead to a shared repository to solve the availability problem. In this paper we describe a new approach to generative design patterns that solves these three difficult problems. We illustrate this approach using tools called CO 2 P 2 S and Meta-CO 2 P 2 S, but our approach is tool-independent.
Asserting the utility of CO2P3S using the Cowichan problems
, 2002
"... Parallel programming environments provide a way for programmers to reap the benefits of parallelism, while reducing the effort required to create parallel applications. The CO2P3S parallel programming system is one such tool that uses a pattern-based approach to express concurrency. Using the Cowich ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
Parallel programming environments provide a way for programmers to reap the benefits of parallelism, while reducing the effort required to create parallel applications. The CO2P3S parallel programming system is one such tool that uses a pattern-based approach to express concurrency. Using the Cowichan Problems, we demonstrate that CO2P3S contains a rich set of parallel patterns for implementing a wide variety of applications running on shared-memory or distributed-memory hardware. An example of these parallel patterns, the Search-Tree pattern, is described and it is shown how the pattern was used to solve the Fifteen Puzzle problem. Code metrics and performance results are presented for the Cowichan applications to show the usability of the CO2P3S system and its ability to reduce programming effort, while producing programs with reasonable performance.
Pattern-based Parallel Programming
- PROCEEDINGS OF THE 2002 INTERNATIONAL CONFERENCE ON PARALLEL PROCESSING
, 2002
"... The advantages of pattern-bas programming have been well-documented in the sequential literature. However patterns have yet to make their way into mains tream parallel computing, even though several research tools support them. There are two criticals hortcomings of pattern (or template) based syste ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
The advantages of pattern-bas programming have been well-documented in the sequential literature. However patterns have yet to make their way into mains tream parallel computing, even though several research tools support them. There are two criticals hortcomings of pattern (or template) based systems for parallel programming: lack of extensibility and performance. The patterns supported by a tool are typically limited in number or scope, thereby narrowing the applicability of a given system. As well, patterns usually offer generic solutions, which incur additional runtime overhead that impacts performance. This paper describes our approach for addressing these problems in the CO2P3S parallel programming system. CO2P3S supports multiple levels of abstraction, allowing the user to design an application with high-level patterns, but move to lower levels of abstraction for performance tuning. Patterns are implemented as parameterized templates allowing the user the ability to customize the pattern to meet their needs. CO2P3S generates code that is specific to the pattern/parameter combinations elected by the user. The MetaCO2P3S tool addresses extensibility by giving us the ability to design and add new pattern templates to CO2P3S. Since the pattern templates are stored in a system-independent format, they are suitable for storing in a repository to be shared throughout the user community. The CO2P3S/MetaCO2P3S combination is unique in the parallel computing world.
PARTITIONING STRATEGIES: SPATIOTEMPORAL PATTERNS OF PROGRAM DECOMPOSITION
"... We describe four partitioning strategies, or patterns, used to decompose a serial application into multiple concurrently executing parts. These partitioning strategies augment the commonly used task and data parallel patterns by recognizing that applications are spatiotemporal in nature. Therefore, ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We describe four partitioning strategies, or patterns, used to decompose a serial application into multiple concurrently executing parts. These partitioning strategies augment the commonly used task and data parallel patterns by recognizing that applications are spatiotemporal in nature. Therefore, data and instruction decomposition are further distinguished by whether the partitioning is done in the spatial or in temporal dimension. Thus, we arrive at four decomposition strategies: spatial data partitioning (SDP), temporal data partitioning (TDP), spatial instruction partitioning (SIP), and temporal instruction partitioning (TIP), and catalog the benefits and drawbacks of each. In addition, the practical use of this work is demonstrated by applying these strategies, and combinations thereof, to implement several different parallelizations of a multicore H.264 encoder for high-definition video.
Partitioning Strategies for Concurrent Programming
"... This work presents four partitioning strategies, or design patterns, useful for decomposing a serial application into multiple concurrently executing parts. These partitioning strategies augment the commonly used task and data parallel design patterns by recognizing that applications are spatiotempo ..."
Abstract
- Add to MetaCart
This work presents four partitioning strategies, or design patterns, useful for decomposing a serial application into multiple concurrently executing parts. These partitioning strategies augment the commonly used task and data parallel design patterns by recognizing that applications are spatiotemporal in nature. Therefore, data and instruction decomposition are further distinguished by whether the partitioning is done in the spatial or in temporal dimension. Thus, this work describes four decomposition strategies: spatial data partitioning (SDP), temporal data partitioning
© 2001 Springer-Verlag Parallel programming with a pattern language
"... Abstract. A design pattern is a description of a highquality solution to a frequently occurring problem in some domain. A pattern language is a collection of design patterns that are carefully organized to embody a design methodology. A designer is led through the pattern language, at each step choo ..."
Abstract
- Add to MetaCart
Abstract. A design pattern is a description of a highquality solution to a frequently occurring problem in some domain. A pattern language is a collection of design patterns that are carefully organized to embody a design methodology. A designer is led through the pattern language, at each step choosing an appropriate pattern, until the final design is obtained in terms of a web of patterns. This paper describes a pattern language for parallel application programs aimed at lowering the barrier to parallel programming by guiding a programmer through the entire process of developing a parallel program. We describe the pattern language, present two example patterns, and sketch a case study illustrating the design process using the pattern language. Key words: Design patterns – Parallel programming 1

