DIB—a distributed implementation of backtracking
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
Algorithmic skeletons: structured management of parallel computation
Algorithmic skeletons: structured management of parallel computation
Orca: A Language for Parallel Programming of Distributed Systems
IEEE Transactions on Software Engineering
Parallel sorting by regular sampling
Journal of Parallel and Distributed Computing
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Automatic code generation from design patterns
IBM Systems Journal
Parallel programming: techniques and applications using networked workstations and parallel computers
A programmer's guide to Jini technology
A programmer's guide to Jini technology
Efficient Java RMI for parallel programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inside the Java Virtual Machine
Inside the Java Virtual Machine
MPI: The Complete Reference
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects
The Enterprise Model for Developing Distributed Applications
IEEE Parallel & Distributed Technology: Systems & Technology
OpenMP: An Industry-Standard API for Shared-Memory Programming
IEEE Computational Science & Engineering
IEEE Transactions on Parallel and Distributed Systems
Generating Parallel Programs from the Wavefront Design Pattern
IPDPS '02 Proceedings of the 16th International Parallel and Distributed Processing Symposium
Patterns Generate Architectures
ECOOP '94 Proceedings of the 8th European Conference on Object-Oriented Programming
From patterns to frameworks to parallel programs
Parallel Computing - Special issue: Advanced environments for parallel and distributed computing
Proceedings of the 17th IEEE international conference on Automated software engineering
Pattern-Based Parallel Programming
ICPP '02 Proceedings of the 2002 International Conference on Parallel Processing
Java programming for high-performance numerical computing
IBM Systems Journal
Object-oriented pattern-based parallel programming with automatically generated frameworks
COOTS'99 Proceedings of the 5th conference on USENIX Conference on Object-Oriented Technologies & Systems - Volume 5
Using Generative Design Patterns to Develop Network Server Applications
IPDPS '05 Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS'05) - Workshop 4 - Volume 05
A library of constructive skeletons for sequential style of parallel programming
InfoScale '06 Proceedings of the 1st international conference on Scalable information systems
Algorithmic skeletons meeting grids
Parallel Computing - Algorithmic skeletons
Is MPI suitable for a generative design-pattern system?
Parallel Computing - Algorithmic skeletons
Proceedings of the 6th workshop on Aspects, components, and patterns for infrastructure software
Code Generation for Parallel Applications Modelled with Object-Based Graph Grammars
Electronic Notes in Theoretical Computer Science (ENTCS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Aspect oriented pluggable support for parallel computing
VECPAR'06 Proceedings of the 7th international conference on High performance computing for computational science
Invasive patterns for distributed programs
OTM'07 Proceedings of the 2007 OTM Confederated international conference on On the move to meaningful internet systems: CoopIS, DOA, ODBASE, GADA, and IS - Volume Part I
Engineering parallel applications with tunable architectures
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Structured parallel programming with deterministic patterns
HotPar'10 Proceedings of the 2nd USENIX conference on Hot topics in parallelism
Babylon v2.0: middleware for distributed, parallel, and mobile java applications
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Exploiting dynamic proxies in middleware for distributed, parallel, and mobile java applications
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
Incrementally developing parallel applications with AspectJ
IPDPS'06 Proceedings of the 20th international conference on Parallel and distributed processing
A coordination-based model-driven method for parallel application development
MODELS'09 Proceedings of the 2009 international conference on Models in Software Engineering
Intel's Array Building Blocks: A retargetable, dynamic compiler and embedded language
CGO '11 Proceedings of the 9th Annual IEEE/ACM International Symposium on Code Generation and Optimization
Automatic generation of software pipelines for heterogeneous parallel systems
SC '12 Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis
Hi-index | 0.00 |
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.