Alan Kaminsky • Department of Computer Science • Rochester Institute of Technology • 4568 + 2424 = 6992

# Building Parallel Programs SMPs, Clusters, and Java

Prof. Alan Kaminsky
Rochester Institute of Technology -- Department of Computer Science

 Building Parallel Programs: SMPs, Clusters, and Java by Alan Kaminsky (Cengage Course Technology, 2010, ISBN 1-4239-0198-3) is a textbook on parallel programming. The textbook is based on the Parallel Java Library. A review of the book: F. Esquembre. There is parallel life for Java scientific programmers! IEEE Computing in Science and Engineering, 13(4):6-8, July/August 2011. [Blog] [IEEE Xplore]

 Preface Part I. Preliminaries Parallel Computing Parallel Computers How to Write Parallel Programs A First Parallel Program Part I Exercises Part II. SMPs Massively Parallel Problems SMP Parallel Programming Massively Parallel Problems, Part 2 Measuring Speedup Cache Interference Measuring Sizeup Parallel Image Generation Load Balancing Reduction Parallel Random Number Generation Reduction, Part 2 Sequential Dependencies Barrier Actions Overlapping Part II Exercises Part III. Clusters A First Cluster Parallel Program Parallel Message Passing Massively Parallel Problems, Part 3 Data Slicing Load Balancing, Part 2 Measuring Communication Overhead Broadcast Reduction, Part 3 All-Gather Scalability and Pipelining Overlapping, Part 2 All-Reduce All-to-All and Scan Part III Exercises Part IV. Hybrid SMP Clusters Massively Parallel Problems, Part 4 Load Balancing, Part 3 Partitioning and Broadcast, Part 2 Parallel Data Set Querying Part IV Exercises Part V. Applications MRI Spin Relaxometry Protein Sequence Querying Phylogenetic Tree Construction Appendices OpenMP Message Passing Interface (MPI) Numerical Methods Atomic Compare-and-Set

## Errata

• Page 4. The first image in Figure 1.1 is incorrect. The correct figure is:

Figure 1.1 Sequence of magnetic resonance images for one slice of a brain

• Page 101. Equation 8.3 should refer to Tseq(N,1) rather than Tseq(N,K).

• Page 124. The second line of Equation 10.4 should be:

 = F⋅T(N,K) + K⋅(1 − F)⋅T(N,K) T(N,K)

• Page 163. The caption for Figure 12.8 should read: "... on different numbers for of processors, ..."

• Page 289. Extraneous text in the left margin should be deleted.

• Page 366. The caption for Figure 23.7 should read: "Master-worker program with one master (M) and K workers (W)"

• Page 470. Equation 27.17 should be:

Tcalc(s,n,K) = 2.04×10−8 sn2/K

• Page 558. The first sentence of Section 31.5 should read: ". . . class edu.rit.clu.monte.AesTestSeqClu."

• Page 574. The text introducing Exercises 21-26 should read: "... Also, measurements show that sending a message from one process to another takes (400 + 0.8B) (200 + 0.01B) microseconds, ..."

• Page 602. In the second block of source code, the line should read:

if (range == null) -- activeWorkers;

• Page 603. In the first block of source code, the line should read:

if (range == null) -- activeWorkers;

• Page 612. In the second block of source code, the line should read:

if (range == null) -- activeWorkers;

• Page 613. In the first block of source code, the line should read:

if (range == null) -- activeWorkers;

• Page 668. The first image in Figure 36.4 is incorrect. The correct figure is:

Figure 36.4 Sequence of spin signal MR images

• Page 700. The caption underneath the middle image in Figure 36.15 should read: "0.93 ≤ R < 0.32 1.32"

 Alan Kaminsky • Department of Computer Science • Rochester Institute of Technology • 4568 + 2424 = 6992