ACM Home Page
Please provide us with feedback. Feedback
Using generative design patterns to generate parallel code for a distributed memory environment
Full text PdfPdf (385 KB)
Source Principles and Practice of Parallel Programming archive
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming table of contents
San Diego, California, USA
SESSION: Programming distributed systems table of contents
Pages: 203 - 215  
Year of Publication: 2003
ISBN:1-58113-588-2
Also published in ...
Authors
Kai Tan  University of Alberta, Edmonton, Canada
Duane Szafron  University of Alberta, Edmonton, Canada
Jonathan Schaeffer  University of Alberta, Edmonton, Canada
John Anvik  University of Alberta, Edmonton, Canada
Steve MacDonald  University of Waterloo, Waterloo, Canada
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 18,   Downloads (12 Months): 100,   Citation Count: 6
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/781498.781532
What is a DOI?

ABSTRACT

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, CO2P3S (Correct Object-Oriented Pattern-based Parallel Programming System) and MetaCO2P3S, 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. CO2P3S 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 application-specific 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 CO2P3S to generate distributed-memory parallel solutions.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
J. Anvik, S. MacDonald, D. Szafron, J. Schaeffer, S. Bromling, and K. Tan. Generating parallel programs from the wavefront design pattern. In Proceedings of 7th International Workshop on High-Level Parallel Programming Models and Supportive Environments, CD-ROM 1--8, 2002.
 
2
 
3
 
4
R. F. Boisvert, J. J. Dongarra, R. Pozo, K. A. Remington, and G. W. Stewart. Developing numerical libraries in Java. In ACM 1998 Workshop on Java for High-Performance Network Computing. ACM SIGPLAN, 1998.
 
5
J. Bosch. Design patterns as language constructs. Journal of Object-Oriented Programming, 11(2):18--32, 1998.
 
6
S. Bromling. Meta-programming with parallel design patterns. Master's thesis, Dept. of Computing Science, University of Alberta, 2001.
 
7
 
8
9
 
10
X. Chen and V. H. Allan. MultiJav: a distributed shared memory system based on multiple Java virtual machines. Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'98), pp. 91--98, 1998.
 
11
 
12
 
13
A. Eden, Y. Hirshfeld, and A. Yehudai. Towards a mathematical foundation for design patterns. Technical Report Technical Report 1999-004, Dept. of Information Technology, University of Uppsala, 1999.
14
 
15
G. Florijn, M. Meijers, and P. van Winsen. Tool support for object-oriented patterns. In Proceedings of the 11th European Conference on Object-Oriented Programming, volume 1241 of Lecture Notes in Computer Science, pages 472--495. Springer-Verlag, 1997.
 
16
E. Freeman and S. Hupfer, Make room for JavaSpaces, Part 1: Ease the development of distributed apps with JavaSpaces, http://www.javaworld.com/javaworld/jw-11-1999/jw-11-jiniology.html
 
17
 
18
GigaSpaces Technologies. GigaSpaces cluster white paper, http://www.gigaspaces.com/download/GSClusterWhitePaper.pdf, 2002.
 
19
 
20
R. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22--35, 1988.
21
 
22
S. MacDonald. From patterns to frameworks to parallel programs. Ph.D. thesis, Dept. of Computing Science, University of Alberta, 2002.
 
23
 
24
S. MacDonald, D. Szafron, and J. Schaeffer. Object-oriented pattern-based parallel programming with automatically generated frameworks. In Proceedings of the 5th USENIX Conference on Object-Oriented Technology and Systems, pp. 29--43, 1999.
 
25
 
26
 
27
M. Massingill, T. Mattson, and B. Sanders. A pattern language for parallel application programs. Technical Report CISE TR 99-022, University of Florida, 1999.
 
28
ModelMaker Tools. Design patterns in ModelMaker. http://www.modelmakertools.com/mm_design_patterns.htm.
 
29
 
30
 
31
M. Philippsen, B. Haumacher, and C. Nester. More efficient serialization and RMI for Java. Concurrency: Practice and Experience, 12(7):495--518, May 2000.
 
32
J. Reynders, et al. POOMA: A framework for scientific simulations of parallel architectures, Parallel Programming in C++, G. Wilson and P. Lu (editors), pp. 547--588, MIT Press, 1996.
 
33
 
34
 
35
 
36
 
37
A. Singh, J. Schaeffer, and D. Szafron. Experience with parallel programming using code templates. Concurrency: Practice & Experience, 10(2):91--120, 1998.
 
38
S. Siu, M. De Simone, D. Goswami, and A. Singh. Design patterns for parallel programming. Proceedings of the 1996 International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'96), pp. 230--240, 1996.
 
39
 
40
F. Sommers. Activatable Jini Services, Part 1: Implement RMI Activation, http://www.javaworld.com/javaworld/jw-09-2000/jw-0915-jinirmi.html
 
41
Sun Microsystems. Java Remote Method Invocation Specification, JDK 1.1, http://java.sun.com/products/jdk/rmi_ed, 1997.
 
42
Sun Microsystems. Jini Architectural Overview, 2001. http://wwws.sun.com/software/jini/whitepapers/architecture.pdf.
 
43
Sun Microsystems. JNI Specification, 2000. http://java.sun.com/products/jdk/1.2/docs/guide/jni/spec/jniTOC.doc.html
 
44
K. Tan, Pattern-based parallel programming in a distributed memory environment. Master's thesis, Dept. of Computing Science, University of Alberta, 2003.
 
45
TogetherSoft Corporation. TogetherSoft ControlCenter tutorials: Using design patterns. http://www.togethersoft.com/services/tutorials/index.jsp.
 
46
 
47
M. Welsh and D. Culler. Jaguar: Enabling efficient communication and I/O in Java. Concurrency: Practice and Experience, 12(7):519--538, 2000.
 
48


Collaborative Colleagues:
Kai Tan: colleagues
Duane Szafron: colleagues
Jonathan Schaeffer: colleagues
John Anvik: colleagues
Steve MacDonald: colleagues