Next: Exercises
Up: 4 Putting Components Together
Previous: 4.6 Case Study: Matrix Multiplication
Modular design techniques are fundamental to good software engineering
practice. In this chapter, we have shown how these techniques can be
applied to the design of parallel programs. The major points are as
follows:
-
The central tenets of modular design, such as simple interfaces and
information hiding, apply in parallel programming just as in
sequential programming.
-
Data distribution is an important implementation detail that, if
abstracted out of a module interface, can facilitate code reuse.
-
It is useful to distinguish between sequential, parallel, and
concurrent composition of parallel modules. Sequential composition is
simple but inflexible. Parallel composition can be used to improve
locality and scalability. Concurrent composition is the most general
form.
-
Performance models can be composed, but care must be taken to account
for communication costs at interfaces, overlapping of computation and
communication, and other factors.
In Part II, we show how the modular design techniques introduced in
this chapter can be applied when developing programs using a range of
parallel programming tools.
Next: Exercises
Up: 4 Putting Components Together
Previous: 4.6 Case Study: Matrix Multiplication
© Copyright 1995 by Ian Foster