A Pattern Language for Parallel Programming
The key to writing high quality parallel software is to develop a robust software
design. This applies to the overall architecture of the program, but also to the
lower layers in the software system where the concurrency and how it is
expressed in the final program is defined. Technology to more systematically
describe such designs and reuse them between software projects is the
fundamental problem facing software for terascale processors. This is far more
important than programming models and their supporting environments, since
with a good design in hand, most any programming system can be used to
actually generate the program’s source code.
In this paper, we will develop our thesis about the central role played by the architecture/design for software. We will then show how design patterns provide a technology to define the reusable design elements in software engineering. This leads us to the ongoing project centered at UC Berkeley’s Par Lab to pull the essential set of design patterns for parallel software design into a Design Pattern Language. After describing out pattern language, we’ll present a case study from the field of machine learning as a concrete example of how patterns are used in practice.
Bron: