Concurrent scientific computing

This text covers the fundamental issues of developing programs for scientific computation on concurrent computers. Its purpose is to construct a conceptual framework that is a basis for understanding the real issues of concurrency. The core problems are often buried by mountains of technical detail. The conceptual framework allows us to cut through non-issues. It is, therefore, a basis for developing new numerical methods and new software tools that solve the real problems. Anyone who wishes to use concurrent computers should benefit from this text. Because the book covers numerical algorithms, an elementary background of linear algebra and advanced calculus is required. A previous contact with structured programming techniques will be helpful. The level of the text is aimed at advanced undergraduate and graduate students and researchers. The few sections that contain more advanced mathematical material can be omitted upon a first reading of the book. All algorithms are developed in detail, in a unified notation, and according to a coherent methodology. This is not an encyclopedia of recipes. Rather, the book stresses the methodology behind developing one's own concurrent programs for scientific computing. The approach is new because the text introduces formal program development to scientific computing. Readers can expect to cut down the time needed to develop concurrent programs. By following the same methodology, the user's programs will be easier to integrate into libraries, easier to use, and portable to a wide variety of concurrent computers.