#### An Introduction to Parallel Computing: Design and Analysis of Algorithms, 2/e

by Grama

#### An Introduction to Parallel Programming

by Peter Pacheco

*An Introduction to Parallel Programming* is the first undergraduate text to directly address compiling and running parallel programs on the new multi-core and cluster architecture. It explains how to design, debug, and evaluate the performance of distributed and shared-memory programs. The author Peter Pacheco uses a tutorial approach to show students how to develop effective parallel programs with MPI, Pthreads, and OpenMP, starting with small programming examples and building progressively to more challenging ones. The text is written for students in undergraduate parallel programming or parallel computing courses designed for the computer science major or as a service course to other departments; professionals with no background in parallel computing.

- Takes a tutorial approach, starting with small programming examples and building progressively to more challenging examples
- Focuses on designing, debugging and evaluating the performance of distributed and shared-memory programs
- Explains how to develop parallel programs using MPI, Pthreads, and OpenMP programming models

#### Introduction to Parallel Algorithms

by C. Xavier, S. S. Iyengar

The complexity of today’s applications coupled with the widespread use of parallel computing has made the design and analysis of parallel algorithms topics of growing interest. This volume fills a need in the field for an introductory treatment of parallel algorithms-appropriate even at the undergraduate level, where no other textbooks on the subject exist. It features a systematic approach to the latest design techniques, providing analysis and implementation details for each parallel algorithm described in the book. Introduction to Parallel Algorithms covers foundations of parallel computing; parallel algorithms for trees and graphs; parallel algorithms for sorting, searching, and merging; and numerical algorithms. This remarkable book:

* Presents basic concepts in clear and simple terms

* Incorporates numerous examples to enhance students’ understanding

* Shows how to develop parallel algorithms for all classical problems in computer science, mathematics, and engineering

* Employs extensive illustrations of new design techniques

* Discusses parallel algorithms in the context of PRAM model

* Includes end-of-chapter exercises and detailed references on parallel computing.

This book enables universities to offer parallel algorithm courses at the senior undergraduate level in computer science and engineering. It is also an invaluable text/reference for graduate students, scientists, and engineers in computer science, mathematics, and engineering.

#### Structured Parallel Programming

by Michael D. McCool, Arch D. Robison, James Reinders

*Structured Parallel Programming* offers the simplest way for developers to learn patterns for high-performance parallel programming. Written by parallel computing experts and industry insiders Michael McCool, Arch Robison, and James Reinders, this book explains how to design and implement maintainable and efficient parallel algorithms using a composable, structured, scalable, and machine-independent approach to parallel computing. It presents both theory and practice, and provides detailed concrete examples using multiple programming models.

The examples in this book are presented using two of the most popular and cutting edge programming models for parallel programming: Threading Building Blocks, and Cilk Plus. These architecture-independent models enable easy integration into existing applications, preserve investments in existing code, and speed the development of parallel applications. Examples from realistic contexts illustrate patterns and themes in parallel algorithm design that are widely applicable regardless of implementation technology.

Software developers, computer programmers, and software architects will find this book extremely helpful.

- The patterns-based approach offers structure and insight that developers can apply to a variety of parallel programming models
- Develops a composable, structured, scalable, and machine-independent approach to parallel computing
- Includes detailed examples in both Cilk Plus and the latest Threading Building Blocks, which support a wide variety of computers