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.
© Copyright 1995 by Ian Foster