Computing is a controversial field. In more traditional fields, such as mathematics and physics, there is usually general agreement on the key issues-which ideas and research projects are ``good,'' what are the critical questions for the future, and so on. There is no such agreement in computing on either the academic or industrial sides. One simple reason is that the field is young-roughly forty years old. However, another important aspect is the multidisciplinary nature of the field. Hardware, software, and applications involve practitioners from very different academic fields with different training, prejudices, and goals. Answering the question, ``Does and How Does Parallel Computing Work?''
requires ``Solving real problems with real software on real hardware''
and so certainly involves aspects of hardware, software, and applications. Thus, some sort of mix of disciplines seems essential in spite of the difficulties in combining several disciplines.
The Caltech Concurrent Computation program attempted to cut through some of
the controversy by adopting an interdisciplinary rather than
multidisciplinary methodology. We can consider the latter as separate
teams of experts as shown in Figures 3.1 and
3.2, which tackle each component of the total project.
In , we tried an integrated approach illustrated in
Figure 3.3. This did not supplant the traditional fields
but rather augmented them with a group of researchers with a broad
range of skills that to a greater or lesser degree spanned those of the
core areas underlying computing. We will return to these discipline
issues in Chapter 20, but note here that this current discussion
is simplistic and just designed to give context to the following
analysis. The assignment of hardware to
electrical engineering and software to computer science (with an
underlying discipline of mathematics) is particularly idealized.
Indeed, in many schools, these components are integrated. However, it
is perhaps fair to say that experts in computer hardware have
significantly different training and background from experts in
computer software.
Figure 3.1: The Multi-Disciplinary (Three-Team) Approach to Computing
Figure 3.2: An Alternative (Four-Team) Multi-Disciplinary Approach to Computing
We believe that much of the success (and perhaps also the failures) of
can be traced to its interdisciplinary nature. In this
spirit, we will provide here a partial integration of the disparate
contributions in this volume with a mathematical framework that links
hardware, software, and applications. In this chapter, we will
describe the principles behind this integration which will then be
amplified and exemplified in the following chapters. This integration
is usually contained in the first introductory section of each
chapter. In Section 3.2, we define a general methodology for
computation and propose that it be described as mappings between
complex systems. The latter are only loosely
defined but several examples are given in Section 3.3, while
relevant properties of complex systems are given in
Sections 3.4 through Section 3.6. Section 3.7
describes mappings between different complex systems and how this
allows one to classify software approaches. Section 3.8 uses
this formalism to state our results and what we mean by ``parallel
computing works.'' In particular, it offers the possibility of a
quantitative approach to such questions as,
``Which parallel machine is suitable for which problems?''and
``What software models are suitable for what problems on what machines?''