From Design Patterns to Parallel Architectural Skeletons

The concept of design patterns has been extensively studied and applied in the context of object-oriented software design. Similar ideas are being explored in other areas of computing as well. Over the past several years, researchers have been experimenting with the feasibility of employing design-patterns related concepts in the parallel computing domain. In the past, several pattern-based systems have been developed with the intention to facilitate faster parallel application development through the use of preimplemented and reusable components that are based on frequently used parallel computing design patterns. However, most of these systems face several serious limitations such as limited flexibility, zero extensibility, and the ad hoc nature of their components. Lack of flexibility in a parallel programming system limits a programmer to using only the high-level components provided by the system. Lack of extensibility here refers to the fact that most of the existing pattern-based parallel programming systems come with a set of prebuilt patterns integrated into the system. However, the system provides no obvious way of increasing the repertoire of patterns when need arises. Also, most of these systems do not offer any generic view of a parallel computing pattern, a fact which may be at the root of several of their shortcomings. This research proposes a generic (i.e., pattern- and application-independent) model for realizing and using parallel design patterns. The term “parallel architectural skeleton” is used to represent the set of generic attributes associated with a pattern. The Parallel Architectural Skeleton Model (PASM) is based on the message-passing paradigm, which makes it suitable for a LAN of workstations and PCs. The model is flexible as it allows the intermixing of high-level patterns with low-level message-passing primitives. An object-oriented and library-based implementation of the model has been completed using C++and MPI, without necessitating any language extension. The generic model and the library-based implementation allow new patterns to be defined and included into the system. The skeleton-library serves as a framework for the systematic, hierarchical development of network-oriented parallel applications.

[1]  Douglas C. Schmidt,et al.  ASX: An Object-Oriented Framework for Developing Distributed Applications , 1994, C++ Conference.

[2]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[3]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[4]  Michael L. Nelson,et al.  C++ Programmer's Guide to the Standard Template Library , 1995 .

[5]  Bruno R. Preiss,et al.  Using Object-Oriented Techniques for Realizing Parallel Architectural Skeletons , 1999, ISCOPE.

[6]  Peter G. Harrison,et al.  Parallel Programming Using Skeleton Functions , 1993, PARLE.

[7]  Al Geist,et al.  Network-based concurrent computing on the PVM system , 1992, Concurr. Pract. Exp..

[8]  Michael Metcalf,et al.  High performance Fortran , 1995 .

[9]  Ajit Singh,et al.  Parallel architectural skeletons: re-usable building blocks for parallel applications , 2001 .

[10]  Gregory V. Wilson,et al.  Parallel Programming Using C , 1996 .

[11]  Dirk Riehle,et al.  Pattern Languages of Program Design 3 , 1997 .

[12]  Paul E. McKenney,et al.  Selecting locking designs for parallel programs , 1996 .

[13]  Jonathan Schaeffer,et al.  The Enterprise model for developing distributed applications , 1993, IEEE Parallel & Distributed Technology: Systems & Applications.

[14]  David Kotz A data-parallel programming library for education (DAPPLE) , 1995, SIGCSE '95.

[15]  M. J. Quinn,et al.  Parallel Computing: Theory and Practice , 1994 .

[16]  Dennis Gannon,et al.  HPC++ and the HPC++Lib Toolkit , 2001, Compiler Optimizations for Scalable Parallel Systems Languages.

[17]  Arthur Robert Weeks,et al.  The Pocket Handbook of Image Processing Algorithms In C , 1993 .

[18]  James C. Browne,et al.  CODE: a unified approach to parallel programming , 1989, IEEE Software.

[19]  Scott W. Haney,et al.  Rapid Application Development and Enhanced Code Interoperability using the POOMA Framework , 1998 .

[20]  Douglas C. Schmidt,et al.  Active object: an object behavioral pattern for concurrent programming , 1996 .

[21]  Ajit Singh,et al.  Design patterns for parallel computing using a network of processors , 1997, Proceedings. The Sixth IEEE International Symposium on High Performance Distributed Computing (Cat. No.97TB100183).

[22]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[23]  Joel H. Saltz,et al.  Parallel Programming Using C++ , 1996 .

[24]  Jonathan Schaeffer,et al.  Experience with parallel programming using code templates , 1998, Concurr. Pract. Exp..

[25]  William Gropp,et al.  Skjellum using mpi: portable parallel programming with the message-passing interface , 1994 .

[26]  Larry Wall,et al.  Programming Perl , 1991 .

[27]  Gianluca Dini,et al.  Graphical design of distributed applications through reusable components , 1995, IEEE Parallel Distributed Technol. Syst. Appl..

[28]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[29]  M. J. Quinn,et al.  Parallel computing (2nd ed.): theory and practice , 1994 .

[30]  Jonathan Schaeffer,et al.  Experience with parallel programming using code templates , 1998 .

[31]  James C. Browne,et al.  Visual programming and debugging for parallel computing , 1995, IEEE Parallel Distributed Technol. Syst. Appl..