ACADEMIA
New Parallel Processing Textbook
TITLE: Parallel Programming in C with MPI and OpenMP, AUTHOR: Michael J. Quinn, Oregon State University, quinn@eecs.orst.edu, PUBLISHER: McGraw-Hill
PAGES: 543, PUBLICATION DATE: June 6, 2003, URL: http://www.mcgraw-hillengineeringcs.com OVERVIEW: The era of practical parallel programming has arrived, marked by the popularity of the MPI and OpenMP software standards and the emergence of commodity clusters as the hardware platform of choice for an increasing number of organizations. This text addresses the needs of students and professionals who want to learn how to design, analyze, implement, and benchmark parallel programs in C using MPI and/or OpenMP. It introduces a rock-solid design methodology with coverage of the most important MPI functions and OpenMP directives. It demonstrates, through a wide range of examples, how to develop parallel programs that will execute efficiently on today's parallel platforms. Fortran programmers interested in parallel programming can also benefit from this text. While the examples in the book are in C, the underlying concepts of parallel programming with MPI and OpenMP are essentially the same for both C and Fortran programmers. KEY FEATURES FIVE-CHAPTER, TUTORIAL INTRODUCTION TO THE MPI LIBRARY. Quinn presents new functions only when needed to solve a programming problem. A carefully
crafted series of example programs gradually introduces 27 key MPI functions. Collective communication functions are presented before point-to-point message passing, making it easier for inexperienced parallel programmers to write correct parallel codes. TUTORIAL INTRODUCTION TO OPENMP. A progressively more complicated series of code segments, functions, and programs allows each OpenMP directive or
function to be introduced "just in time" to meet a need. INTRODUCTION TO HYBRID PARALLEL PROGRAMMING USING BOTH MPI AND OPENMP. This is often the most effective way to program clusters constructed out of symmetrical multiprocessors. EMPHASIS ON DESIGN, ANALYSIS, IMPLEMENTATION, and BENCHMARKING. An early chapter introduces a rigorous parallel algorithm design process. This
process is used throughout the rest of the book to develop parallel algorithms for a wide variety of applications. The book repeatedly demonstrates how benchmarking a sequential program and carefully analyzing a parallel design can lead to accurate predictions of the performance of a parallel program. EXCEPTIONAL CHAPTER ON PERFORMANCE ANALYSIS. Quinn takes a single, generic speedup formula and derives from it Amdahl's Law, Gustafson-Barsis's Law,
the Karp-Flatt metric, and the isoefficiency relation. Students will learn the purpose of each formula and how they relate to each other. PARALLEL ALGORITHMS FOR MANY APPLICATIONS. The book considers parallel implementations of Floyd's algorithm, matrix-vector multiplication, matrix
multiplication, Gaussian elimination, the conjugate gradient method, finite difference methods, sorting, the fast Fourier transform, backtrack search,
branch-and-bound, and more. THOROUGH TREATMENT OF MONTE CARLO ALGORITHMS. A full chapter on this often-neglected topic introduces problems associated with parallel random
number generation and covers random walks, simulated annealing, the Metropolis algorithm, and much more. BRIEF TABLE OF CONTENTS 1 Motivation and History
2 Parallel Architectures
3 Parallel Algorithm Design
4 Message-Passing Programming
5 The Sieve of Eratosthenes
6 Floyd's Algorithm
7 Performance Analysis
8 Matrix-Vector Multiplication
9 Document Classification
10 Monte Carlo Methods
11 Matrix Multiplication
12 Solving Linear Systems
13 Finite Difference Methods
14 Sorting
15 The Fast Fourier Transform
16 Combinatorial Search
17 Shared-Memory Programming
18 Combining MPI and OpenMP A MPI Functions
B Utility Functions
C Debugging MPI Programs
D Review of Complex Numbers
E OpenMP Functions Bibliography Author Index Subject Index