Introduction to Parallel Computing provides an in-depth look at techniques for the design and analysis of parallel algorithms and for programming these algorithms on commercially available parallel platforms. The book discusses principles of parallel algorithm design and different parallel programming models with extensive coverage of MPI, POSIX threads, and OpenMP. It provides a broad and balanced coverage of various core topics such as sorting, graph algorithms, discrete optimization techniques, data-mining algorithms, and a number of algorithms used in numerical and scientific computing applications. The basic approach advocated in this text is one of portable parallel algorithm and software development, an empahsis lacking in all existing textbooks on parallel computing. To enhance the pedagogical value of the text, extensive examples, diagrams, exercises of varying degrees of difficulty, and bibliographical remarks are provided. In addition to serving as a textbook and a reference source for professionals and parallel software developers, the book will help students and researchers in non computer-science disciplines who need to solve computation-intensive problems using parallel computers.
A complete source of information on all aspects of parallel computing - gives students a hlisitic overview of the subject.
The only book to have complete coverage of traditional Computer Science algorithms (sorting, graph and matrix algorithms), scientific computing algorithms (FFT, sparse matrix computations, N-body methods), and data intensive algorithms (search, dynamic programming, data-mining) - students gain strong foundations in algorithm theory and applications.
The first book to cover together MPI, Pthreads, and OpenMP - the three most widely used standards for writing portable parallel programs.
The modular nature of the presentation of this book enables instructors to teach a variety of undergraduate- and graduate-level courses.
New to This Edition
Chapter on principles of parallel programming lays out the basis for abstractions that capture critical features of the underlying architecture of algorithmic portability.
Chapter on programming paradigms introduces standardized programming models such as MPI, POSIX threads, and OpenMP.
Provides an emphasis on portability.
Table of Contents
PART I: BASICS1. Parallel Programming Platforms2. Principles of Parallel Algorithm Design3. Analytical Modeling of Parallel Programs4. Basic Communication OperationsPART II: PARALLEL PROGRAMMING5. Parallel Programming Paradigms6. Programming Shared Address Space Platforms7. Programming Message Passing PlatformsPART III: PARALLEL ALGORITHMS AND APPLICATIONS8. Dense Matrix Algorithms9. Sorting10. Graph Algorithms11. Discrete Optimization Problems12. Dynamic Programming13. Fast Fourier Transform