In this chapter we examine a number of explicitly parallel models of computation, including shared and distributed memory models and, in particular, linear and multidimensional arrays, hypercube-based machines, and the PRAM model. We give a broad introduction to a large and representative set of models, describing a handful of good parallel programming techniques and showing through analysis the limits on parallelization. Because of the limited use so far of parallel algorithms and machines, the wide range of hardware and software models developed by the research community has not yet been fully digested by the computer industry.
Parallelism in logic and algebraic circuits is also examined in
Chapters 2 and 6.
The block I/O model, which characterizes parallelism at the disk level, is
presented in Section
and the classification of problems by
their execution time on parallel machines is discussed in
Section
.