The literature on parallel programming and parallel computing is large and expanding rapidly. We have provided numerous references to this literature in the chapter notes. Here, we provide additional pointers.

Numerous books on parallel computing provide other perspectives or
more detailed treatments of topics covered only briefly here. Of
particular interest are the texts by Quinn [235] and Kumar et
al. [179], both of which complement * Designing and
Building Parallel Programs
* by describing a wide range of
parallel algorithms and communication structures; both also include
excellent bibliographies. The Association for Computing
Machinery [1] has published a bibliography of relevant
material. Fox et al. [111,113] describe a range of parallel
algorithms, focusing on
developments in the Caltech Concurrent Computation Project. Books by
Akl [8], Gibbons and Rytter [119],
JáJá [157], Leighton [187], Miller and
Stout [209], and Smith [267] provide more theoretical
treatments.

Texts describing parallel computer architecture include those by Almasi and Gottlieb [11], DeCegama [75], Hwang [156], Reed and Fujimoto [242], Suaya and Birtwistle [272], Stone [269], and Tabak [278]. See also the survey articles by Duncan [87,88] and a chapter in Hennessy and Patterson's [134] book on computer architecture.

Books providing general introductions to parallel programming or describing particular approaches include those by Andrews [14], Andrews and Olson [15], Ben Ari [32], Carriero and Gelernter [48], Chandy and Taylor [55], Foster and Taylor [107], Gehani and Roome [117], Hatcher and Quinn [136], Koelbel et al. [176], and Wallach [291]. See also the survey articles by Karp [166] and Bal, Steiner, and Tanenbaum [23]. Feo, Cann, and Oldehoeft [95] describe SISAL, a functional programming language for parallel computing.

Kumar et al. [179] describe many parallel numeric algorithms and provide detailed references to the literature. Books by Bertsekas and Tsitsiklis [35], Carey [46], Dongarra et al. [82], Fox et al. [111], Golub and Ortega [122], Lakshmivarahan and Dhall [184], and van der Velde [290] address various aspects of parallel algorithms in numerical analysis and scientific computing. Survey articles in this area include those by Gallivan, Plemmons, and Sameh [116] (dense matrix algorithms); Demmel, Heath, and van der Vorst [77] (dense matrix algorithms); and Heath et al. [140] (sparse matrix algorithms).

Useful resources in other areas include the books by Akl and Lyons [9] (computational geometry), Banerjee [26] (VLSI design), Dew, Earnshaw, and Heywood [78] and Ranka and Sahni [238] (computer vision), Gupta [128] (production systems), and Kowalik [178] (artificial intelligence). An article by Manber [195] discusses concurrent data structures, while Singhal [260] surveys deadlock detection algorithms.

Keeping up to date with the most recent developments in parallel
computing is made difficult by the large number of journals and
conferences. * IEEE Parallel and Distributed Technology
*
magazine covers many topics of interest to parallel programmers. *
IEEE Computational Science and Engineering
* magazine focuses on
the use of high-performance computers in science and engineering.
* IEEE Transactions on Parallel and Distributed Systems
*
emphasizes parallel hardware and algorithms. * Concurrency:
Practice and Experience
* contains a mixture of application and
algorithm papers, typically with an empirical flavor. Other relevant
journals include * International Journal of Parallel Programming*,
* Journal of Parallel Algorithms and Applications*, * Journal of
Parallel and Distributed Computing*, and * Parallel Computing*. In
addition, the following journals often include relevant articles: *
Communications of the ACM*, * Computer*, * Future Generation
Computer Systems*, * IEEE Transactions on Computers*, * IEEE
Transactions on Software Engineering*, * International Journal of
Supercomputer Applications*, * Journal of Distributed Systems*,
* New Generation Computing*, * Scientific Programming*, *
SIAM Journal of Scientific and Statistical Computing*, and * SIAM
Review*.

The proceedings of various conferences in the field are also of interest. See, in particular, the proceedings of the annual Supercomputing conference and the SIAM Conference on Parallel Processing for Scientific Computing; both include papers on applications, tools, and algorithms for parallel computers, with an emphasis on scientific computing. Other relevant meetings include the Conference on Parallel Computational Fluid Dynamics, CONPAR, Frontiers of Massively Parallel Processing, the International Conference on Parallel Programming, the International Parallel Processing Symposium, PARCO, and the ACM Symposium on Principles and Practice of Parallel Programming.

Here is a Web Tour providing online bibliographies and other sources of information on parallel computing.