A Pattern Language for Parallel Programming

Uit Pareltaal
Ga naar: navigatie, zoeken

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.