Parallel programming in C with MPI and OpenMP
By: Michael J. Quinn
Publisher: McGraw-Hill Higher Education
Published: 2004
Place of publication: Boston
Language: eng
Number of pages: 529
Subjects: C (Computer program language); Parallel programming (Computer science)
Notes: Includes bibliographical references (p. 515-519) and indexes
Table of contents: title: Preface
pagenum: xiv; label: Chapter 1
title: Motivation and History
pagenum: 1; label: 1.1
title: Introduction
pagenum: 1; label: 1.2
title: Modern Scientific Method
pagenum: 3; label: 1.3
title: Evolution of Supercomputing
pagenum: 4; label: 1.4
title: Modern Parallel Computers
pagenum: 5; label: 1.4.1
title: The Cosmic Cube
pagenum: 6; label: 1.4.2
title: Commercial Parallel Computers
pagenum: 6; label: 1.4.3
title: Beowulf
pagenum: 7; label: 1.4.4
title: Advanced Strategic Computing Initiative
pagenum: 8; label: 1.5
title: Seeking Concurrency
pagenum: 9; label: 1.5.1
title: Data Dependence Graphs
pagenum: 9; label: 1.5.2
title: Data Parallelism
pagenum: 10; label: 1.5.3
title: Functional Parallelism
pagenum: 10; label: 1.5.4
title: Pipelining
pagenum: 12; label: 1.5.5
title: Size Considerations
pagenum: 13; label: 1.6
title: Data Clustering
pagenum: 14; label: 1.7
title: Programming Parallel Computers
pagenum: 17; label: 1.7.1
title: Extend a Compiler
pagenum: 17; label: 1.7.2
title: Extend a Sequential Programming Language
pagenum: 18; label: 1.7.3
title: Add a Parallel Programming Layer
pagenum: 19; label: 1.7.4
title: Create a Parallel Language
pagenum: 19; label: 1.7.5
title: Current Status
pagenum: 21; label: 1.8
title: Summary
pagenum: 21; label: 1.9
title: Key Terms
pagenum: 22; label: 1.10
title: Bibliographic Notes
pagenum: 22; label: 1.11
title: Exercises
pagenum: 23; label: Chapter 2
title: Parallel Architectures
pagenum: 27; label: 2.1
title: Introduction
pagenum: 27; label: 2.2
title: Interconnection Networks
pagenum: 28; label: 2.2.1
title: Shared versus Switched Media
pagenum: 28; label: 2.2.2
title: Switch Network Topologies
pagenum: 29; label: 2.2.3
title: 2-D Mesh Network
pagenum: 29; label: 2.2.4
title: Binary Tree Network
pagenum: 30; label: 2.2.5
title: Hypertree Network
pagenum: 31; label: 2.2.6
title: Butterfly Network
pagenum: 32; label: 2.2.7
title: Hypercube Network
pagenum: 33; label: 2.2.8
title: Shuffle-exchange Network
pagenum: 35; label: 2.2.9
title: Summary
pagenum: 36; label: 2.3
title: Processor Arrays
pagenum: 37; label: 2.3.1
title: Architecture and Data-parallel Operations
pagenum: 37; label: 2.3.2
title: Processor Array Performance
pagenum: 39; label: 2.3.3
title: Processor Interconnection Network
pagenum: 40; label: 2.3.4
title: Enabling and Disabling Processors
pagenum: 40; label: 2.3.5
title: Additional Architectural Features
pagenum: 42; label: 2.3.6
title: Shortcomings of Processor Arrays
pagenum: 42; label: 2.4
title: Multiprocessors
pagenum: 43; label: 2.4.1
title: Centralized Multiprocessors
pagenum: 43; label: 2.4.2
title: Distributed Multiprocessors
pagenum: 45; label: 2.5
title: Multicomputers
pagenum: 49; label: 2.5.1
title: Asymmetrical Multicomputers
pagenum: 49; label: 2.5.2
title: Symmetrical Multicomputers
pagenum: 51; label: 2.5.3
title: Which Model Is Best for a Commodity Cluster?
pagenum: 52; label: 2.5.4
title: Differences between Clusters and Networks of Workstations
pagenum: 53; label: 2.6
title: Flynn's Taxonomy
pagenum: 54; label: 2.6.1
title: SISD
pagenum: 54; label: 2.6.2
title: SIMD
pagenum: 55; label: 2.6.3
title: MISD
pagenum: 55; label: 2.6.4
title: MIMD
pagenum: 56; label: 2.7
title: Summary
pagenum: 58; label: 2.8
title: Key Terms
pagenum: 59; label: 2.9
title: Bibliographic Notes
pagenum: 59; label: 2.10
title: Exercises
pagenum: 60; label: Chapter 3
title: Parallel Algorithm Design
pagenum: 63; label: 3.1
title: Introduction
pagenum: 63; label: 3.2
title: The Task/Channel Model
pagenum: 63; label: 3.3
title: Foster's Design Methodology
pagenum: 64; label: 3.3.1
title: Partitioning
pagenum: 65; label: 3.3.2
title: Communication
pagenum: 67; label: 3.3.3
title: Agglomeration
pagenum: 68; label: 3.3.4
title: Mapping
pagenum: 70; label: 3.4
title: Boundary Value Problem
pagenum: 73; label: 3.4.1
title: Introduction
pagenum: 73; label: 3.4.2
title: Partitioning
pagenum: 75; label: 3.4.3
title: Communication
pagenum: 75; label: 3.4.4
title: Agglomeration and Mapping
pagenum: 76; label: 3.4.5
title: Analysis
pagenum: 76; label: 3.5
title: Finding the Maximum
pagenum: 77; label: 3.5.1
title: Introduction
pagenum: 77; label: 3.5.2
title: Partitioning
pagenum: 77; label: 3.5.3
title: Communication
pagenum: 77; label: 3.5.4
title: Agglomeration and Mapping
pagenum: 81; label: 3.5.5
title: Analysis
pagenum: 82; label: 3.6
title: The n-Body Problem
pagenum: 82; label: 3.6.1
title: Introduction
pagenum: 82; label: 3.6.2
title: Partitioning
pagenum: 83; label: 3.6.3
title: Communication
pagenum: 83; label: 3.6.4
title: Agglomeration and Mapping
pagenum: 85; label: 3.6.5
title: Analysis
pagenum: 85; label: 3.7
title: Adding Data Input
pagenum: 86; label: 3.7.1
title: Introduction
pagenum: 86; label: 3.7.2
title: Communication
pagenum: 87; label: 3.7.3
title: Analysis
pagenum: 88; label: 3.8
title: Summary
pagenum: 89; label: 3.9
title: Key Terms
pagenum: 90; label: 3.10
title: Bibliographic Notes
pagenum: 90; label: 3.11
title: Exercises
pagenum: 90; label: Chapter 4
title: Message-Passing Programming
pagenum: 93; label: 4.1
title: Introduction
pagenum: 93; label: 4.2
title: The Message-Passing Model
pagenum: 94; label: 4.3
title: The Message-Passing Interface
pagenum: 95; label: 4.4
title: Circuit Satisfiability
pagenum: 96; label: 4.4.1
title: Function `MPI_Init`
pagenum: 99; label: 4.4.2
title: Functions `MPI_Comm_rank` and `MPI_Comm_size`
pagenum: 99; label: 4.4.3
title: Function `MPI_Finalize`
pagenum: 101; label: 4.4.4
title: Compiling MPI Programs
pagenum: 102; label: 4.4.5
title: Running MPI Programs
pagenum: 102; label: 4.5
title: Introducing Collective Communication
pagenum: 104; label: 4.5.1
title: Function `MPI_Reduce`
pagenum: 105; label: 4.6
title: Benchmarking Parallel Performance
pagenum: 108; label: 4.6.1
title: Functions `MPI_Wtime` and `MPI_Wtick`
pagenum: 108; label: 4.6.2
title: Function `MPI_Barrier`
pagenum: 108; label: 4.7
title: Summary
pagenum: 110; label: 4.8
title: Key Terms
pagenum: 110; label: 4.9
title: Bibliographic Notes
pagenum: 110; label: 4.10
title: Exercises
pagenum: 111; label: Chapter 5
title: The Sieve of Eratosthenes
pagenum: 115; label: 5.1
title: Introduction
pagenum: 115; label: 5.2
title: Sequential Algorithm
pagenum: 115; label: 5.3
title: Sources of Parallelism
pagenum: 117; label: 5.4
title: Data Decomposition Options
pagenum: 117; label: 5.4.1
title: Interleaved Data Decomposition
pagenum: 118; label: 5.4.2
title: Block Data Decomposition
pagenum: 118; label: 5.4.3
title: Block Decomposition Macros
pagenum: 120; label: 5.4.4
title: Local Index versus Global Index
pagenum: 120; label: 5.4.5
title: Ramifications of Block Decomposition
pagenum: 121; label: 5.5
title: Developing the Parallel Algorithm
pagenum: 121; label: 5.5.1
title: Function MPI_Bcast
pagenum: 122; label: 5.6
title: Analysis of Parallel Sieve Algorithm
pagenum: 122; label: 5.7
title: Documenting the Parallel Program
pagenum: 123; label: 5.8
title: Benchmarking
pagenum: 128; label: 5.9
title: Improvements
pagenum: 129; label: 5.9.1
title: Delete Even Integers
pagenum: 129; label: 5.9.2
title: Eliminate Broadcast
pagenum: 130; label: 5.9.3
title: Reorganize Loops
pagenum: 131; label: 5.9.4
title: Benchmarking
pagenum: 131; label: 5.10
title: Summary
pagenum: 133; label: 5.11
title: Key Terms
pagenum: 134; label: 5.12
title: Bibliographic Notes
pagenum: 134; label: 5.13
title: Exercises
pagenum: 134; label: Chapter 6
title: Floyd's Algorithm
pagenum: 137; label: 6.1
title: Introduction
pagenum: 137; label: 6.2
title: The All-Pairs Shortest-Path Problem
pagenum: 137; label: 6.3
title: Creating Arrays at Run Time
pagenum: 139; label: 6.4
title: Designing the Parallel Algorithm
pagenum: 140; label: 6.4.1
title: Partitioning
pagenum: 140; label: 6.4.2
title: Communication
pagenum: 141; label: 6.4.3
title: Agglomeration and Mapping
pagenum: 142; label: 6.4.4
title: Matrix Input/Output
pagenum: 143; label: 6.5
title: Point-to-Point Communication
pagenum: 145; label: 6.5.1
title: Function MPI_Send
pagenum: 146; label: 6.5.2
title: Function MPI_Recv
pagenum: 147; label: 6.5.3
title: Deadlock
pagenum: 148; label: 6.6
title: Documenting the Parallel Program
pagenum: 149; label: 6.7
title: Analysis and Benchmarking
pagenum: 151; label: 6.8
title: Summary
pagenum: 154; label: 6.9
title: Key Terms
pagenum: 154; label: 6.10
title: Bibliographic Notes
pagenum: 154; label: 6.11
title: Exercises
pagenum: 154; label: Chapter 7
title: Performance Analysis
pagenum: 159; label: 7.1
title: Introduction
pagenum: 159; label: 7.2
title: Speedup and Efficiency
pagenum: 159; label: 7.3
title: Amdahl's Law
pagenum: 161; label: 7.3.1
title: Limitations of Amdahl's Law
pagenum: 164; label: 7.3.2
title: The Amdahl Effect
pagenum: 164; label: 7.4
title: Gustafson-Barsis's Law
pagenum: 164; label: 7.5
title: The Karp-Flatt Metric
pagenum: 167; label: 7.6
title: The Isoefficiency Metric
pagenum: 170; label: 7.7
title: Summary
pagenum: 174; label: 7.8
title: Key Terms
pagenum: 175; label: 7.9
title: Bibliographic Notes
pagenum: 175; label: 7.10
title: Exercises
pagenum: 176; label: Chapter 8
title: Matrix-Vector Multiplication
pagenum: 178; label: 8.1
title: Introduction
pagenum: 178; label: 8.2
title: Sequential Algorithm
pagenum: 179; label: 8.3
title: Data Decomposition Options
pagenum: 180; label: 8.4
title: Rowwise Block-Striped Decomposition
pagenum: 181; label: 8.4.1
title: Design and Analysis
pagenum: 181; label: 8.4.2
title: Replicating a Block-Mapped Vector
pagenum: 183; label: 8.4.3
title: Function MPI_Allgatherv
pagenum: 184; label: 8.4.4
title: Replicated Vector Input/Output
pagenum: 186; label: 8.4.5
title: Documenting the Parallel Program
pagenum: 187; label: 8.4.6
title: Benchmarking
pagenum: 187; label: 8.5
title: Columnwise Block-Striped Decomposition
pagenum: 189; label: 8.5.1
title: Design and Analysis
pagenum: 189; label: 8.5.2
title: Reading a Columnwise Block-Striped Matrix
pagenum: 191; label: 8.5.3
title: Function MPI_Scatterv
pagenum: 191; label: 8.5.4
title: Printing a Columnwise Block-Striped Matrix
pagenum: 193; label: 8.5.5
title: Function `MPI_Gatherv`
pagenum: 193; label: 8.5.6
title: Distributing Partial Results
pagenum: 195; label: 8.5.7
title: Function `MPI_Alltoallv`
pagenum: 195; label: 8.5.8
title: Documenting the Parallel Program
pagenum: 196; label: 8.5.9
title: Benchmarking
pagenum: 198; label: 8.6
title: Checkerboard Block Decomposition
pagenum: 199; label: 8.6.1
title: Design and Analysis
pagenum: 199; label: 8.6.2
title: Creating a Communicator
pagenum: 202; label: 8.6.3
title: Function `MPI_Dims_create`
pagenum: 203; label: 8.6.4
title: Function `MPI_Cart_create`
pagenum: 204; label: 8.6.5
title: Reading a Checkerboard Matrix
pagenum: 205; label: 8.6.6
title: Function `MPI_Cart_rank`
pagenum: 205; label: 8.6.7
title: Function `MPI_Cart_coords`
pagenum: 207; label: 8.6.8
title: Function `MPI_Comm_split`
pagenum: 207; label: 8.6.9
title: Benchmarking
pagenum: 208; label: 8.7
title: Summary
pagenum: 210; label: 8.8
title: Key Terms
pagenum: 211; label: 8.9
title: Bibliographic Notes
pagenum: 211; label: 8.10
title: Exercises
pagenum: 211; label: Chapter 9
title: Document Classification
pagenum: 216; label: 9.1
title: Introduction
pagenum: 216; label: 9.2
title: Parallel Algorithm Design
pagenum: 217; label: 9.2.1
title: Partitioning and Communication
pagenum: 217; label: 9.2.2
title: Agglomeration and Mapping
pagenum: 217; label: 9.2.3
title: Manager/Worker Paradigm
pagenum: 218; label: 9.2.4
title: Manager Process
pagenum: 219; label: 9.2.5
title: Function `MPI_Abort`
pagenum: 220; label: 9.2.6
title: Worker Process
pagenum: 221; label: 9.2.7
title: Creating a Workers-only Communicator
pagenum: 223; label: 9.3
title: Nonblocking Communications
pagenum: 223; label: 9.3.1
title: Manager's Communication
pagenum: 224; label: 9.3.2
title: Function `MPI_Irecv`
pagenum: 224; label: 9.3.3
title: Function `MPI_Wait`
pagenum: 225; label: 9.3.4
title: Workers' Communications
pagenum: 225; label: 9.3.5
title: Function `MPI_Isend`
pagenum: 225; label: 9.3.6
title: Function `MPI_Probe`
pagenum: 225; label: 9.3.7
title: Function `MPI_Get_count`
pagenum: 226; label: 9.4
title: Documenting the Parallel Program
pagenum: 226; label: 9.5
title: Enhancements
pagenum: 232; label: 9.5.1
title: Assigning Groups of Documents
pagenum: 232; label: 9.5.2
title: Pipelining
pagenum: 232; label: 9.5.3
title: Function `MPI_Testsome`
pagenum: 234; label: 9.6
title: Summary
pagenum: 235; label: 9.7
title: Key Terms
pagenum: 236; label: 9.8
title: Bibliographic Notes
pagenum: 236; label: 9.9
title: Exercises
pagenum: 236; label: Chapter 10
title: Monte Carlo Methods
pagenum: 239; label: 10.1
title: Introduction
pagenum: 239; label: 10.1.1
title: Why Monte Carlo Works
pagenum: 240; label: 10.1.2
title: Monte Carlo and Parallel Computing
pagenum: 243; label: 10.2
title: Sequential Random Number Generators
pagenum: 243; label: 10.2.1
title: Linear Congruential
pagenum: 244; label: 10.2.2
title: Lagged Fibonacci
pagenum: 245; label: 10.3
title: Parallel Random Number Generators
pagenum: 245; label: 10.3.1
title: Manager-Worker Method
pagenum: 246; label: 10.3.2
title: Leapfrog Method
pagenum: 246; label: 10.3.3
title: Sequence Splitting
pagenum: 247; label: 10.3.4
title: Parameterization
pagenum: 248; label: 10.4
title: Other Random Number Distributions
pagenum: 248; label: 10.4.1
title: Inverse Cumulative Distribution Function Transformation
pagenum: 249; label: 10.4.2
title: Box-Muller Transformation
pagenum: 250; label: 10.4.3
title: The Rejection Method
pagenum: 251; label: 10.5
title: Case Studies
pagenum: 253; label: 10.5.1
title: Neutron Transport
pagenum: 253; label: 10.5.2
title: Temperature at a Point Inside a 2-D Plate
pagenum: 255; label: 10.5.3
title: Two-Dimensional Ising Model
pagenum: 257; label: 10.5.4
title: Room Assignment Problem
pagenum: 259; label: 10.5.5
title: Parking Garage
pagenum: 262; label: 10.5.6
title: Traffic Circle
pagenum: 264; label: 10.6
title: Summary
pagenum: 268; label: 10.7
title: Key Terms
pagenum: 269; label: 10.8
title: Bibliographic Notes
pagenum: 269; label: 10.9
title: Exercises
pagenum: 270; label: Chapter 11
title: Matrix Multiplication
pagenum: 273; label: 11.1
title: Introduction
pagenum: 273; label: 11.2
title: Sequential Matrix Multiplication
pagenum: 274; label: 11.2.1
title: Iterative, Row-Oriented Algorithm
pagenum: 274; label: 11.2.2
title: Recursive, Block-Oriented Algorithm
pagenum: 275; label: 11.3
title: Rowwise Block-Striped Parallel Algorithm
pagenum: 277; label: 11.3.1
title: Identifying Primitive Tasks
pagenum: 277; label: 11.3.2
title: Agglomeration
pagenum: 278; label: 11.3.3
title: Communication and Further Agglomeration
pagenum: 279; label: 11.3.4
title: Analysis
pagenum: 279; label: 11.4
title: Cannon's Algorithm
pagenum: 281; label: 11.4.1
title: Agglomeration
pagenum: 281; label: 11.4.2
title: Communication
pagenum: 283; label: 11.4.3
title: Analysis
pagenum: 284; label: 11.5
title: Summary
pagenum: 286; label: 11.6
title: Key Terms
pagenum: 287; label: 11.7
title: Bibliographic Notes
pagenum: 287; label: 11.8
title: Exercises
pagenum: 287; label: Chapter 12
title: Solving Linear Systems
pagenum: 290; label: 12.1
title: Introduction
pagenum: 290; label: 12.2
title: Terminology
pagenum: 291; label: 12.3
title: Back Substitution
pagenum: 292; label: 12.3.1
title: Sequential Algorithm
pagenum: 292; label: 12.3.2
title: Row-Oriented Parallel Algorithm
pagenum: 293; label: 12.3.3
title: Column-Oriented Parallel Algorithm
pagenum: 295; label: 12.3.4
title: Comparison
pagenum: 295; label: 12.4
title: Gaussian Elimination
pagenum: 296; label: 12.4.1
title: Sequential Algorithm
pagenum: 296; label: 12.4.2
title: Parallel Algorithms
pagenum: 298; label: 12.4.3
title: Row-Oriented Algorithm
pagenum: 299; label: 12.4.4
title: Column-Oriented Algorithm
pagenum: 303; label: 12.4.5
title: Comparison
pagenum: 303; label: 12.4.6
title: Pipelined, Row-Oriented Algorithm
pagenum: 304; label: 12.5
title: Iterative Methods
pagenum: 306; label: 12.6
title: The Conjugate Gradient Method
pagenum: 309; label: 12.6.1
title: Sequential Algorithm
pagenum: 309; label: 12.6.2
title: Parallel Implementation
pagenum: 310; label: 12.7
title: Summary
pagenum: 313; label: 12.8
title: Key Terms
pagenum: 314; label: 12.9
title: Bibliographic Notes
pagenum: 314; label: 12.10
title: Exercises
pagenum: 314; label: Chapter 13
title: Finite Difference Methods
pagenum: 318; label: 13.1
title: Introduction
pagenum: 318; label: 13.2
title: Partial Differential Equations
pagenum: 320; label: 13.2.1
title: Categorizing PDEs
pagenum: 320; label: 13.2.2
title: Difference Quotients
pagenum: 321; label: 13.3
title: Vibrating String
pagenum: 322; label: 13.3.1
title: Deriving Equations
pagenum: 322; label: 13.3.2
title: Deriving the Sequential Program
pagenum: 323; label: 13.3.3
title: Parallel Program Design
pagenum: 324; label: 13.3.4
title: Isoefficiency Analysis
pagenum: 327; label: 13.3.5
title: Replicating Computations
pagenum: 327; label: 13.4
title: Steady-State Heat Distribution
pagenum: 329; label: 13.4.1
title: Deriving Equations
pagenum: 329; label: 13.4.2
title: Deriving the Sequential Program
pagenum: 330; label: 13.4.3
title: Parallel Program Design
pagenum: 332; label: 13.4.4
title: Isoefficiency Analysis
pagenum: 332; label: 13.4.5
title: Implementation Details
pagenum: 334; label: 13.5
title: Summary
pagenum: 334; label: 13.6
title: Key Terms
pagenum: 335; label: 13.7
title: Bibliographic Notes
pagenum: 335; label: 13.8
title: Exercises
pagenum: 335; label: Chapter 14
title: Sorting
pagenum: 338; label: 14.1
title: Introduction
pagenum: 338; label: 14.2
title: Quicksort
pagenum: 339; label: 14.3
title: A Parallel Quicksort Algorithm
pagenum: 340; label: 14.3.1
title: Definition of Sorted
pagenum: 340; label: 14.3.2
title: Algorithm Development
pagenum: 341; label: 14.3.3
title: Analysis
pagenum: 341; label: 14.4
title: Hyperquicksort
pagenum: 343; label: 14.4.1
title: Algorithm Description
pagenum: 343; label: 14.4.2
title: Isoefficiency Analysis
pagenum: 345; label: 14.5
title: Parallel Sorting by Regular Sampling
pagenum: 346; label: 14.5.1
title: Algorithm Description
pagenum: 346; label: 14.5.2
title: Isoefficiency Analysis
pagenum: 347; label: 14.6
title: Summary
pagenum: 349; label: 14.7
title: Key Terms
pagenum: 349; label: 14.8
title: Bibliographic Notes
pagenum: 350; label: 14.9
title: Exercises
pagenum: 350; label: Chapter 15
title: The Fast Fourier Transform
pagenum: 353; label: 15.1
title: Introduction
pagenum: 353; label: 15.2
title: Fourier Analysis
pagenum: 353; label: 15.3
title: The Discrete Fourier Transform
pagenum: 355; label: 15.3.1
title: Inverse Discrete Fourier Transform
pagenum: 357; label: 15.3.2
title: Sample Application: Polynomial Multiplication
pagenum: 357; label: 15.4
title: The Fast Fourier Transform
pagenum: 360; label: 15.5
title: Parallel Program Design
pagenum: 363; label: 15.5.1
title: Partitioning and Communication
pagenum: 363; label: 15.5.2
title: Agglomeration and Mapping
pagenum: 365; label: 15.5.3
title: Isoefficiency Analysis
pagenum: 365; label: 15.6
title: Summary
pagenum: 367; label: 15.7
title: Key Terms
pagenum: 367; label: 15.8
title: Bibliographic Notes
pagenum: 367; label: 15.9
title: Exercises
pagenum: 367; label: Chapter 16
title: Combinatorial Search
pagenum: 369; label: 16.1
title: Introduction
pagenum: 369; label: 16.2
title: Divide and Conquer
pagenum: 370; label: 16.3
title: Backtrack Search
pagenum: 371; label: 16.3.1
title: Example
pagenum: 371; label: 16.3.2
title: Time and Space Complexity
pagenum: 374; label: 16.4
title: Parallel Backtrack Search
pagenum: 374; label: 16.5
title: Distributed Termination Detection
pagenum: 377; label: 16.6
title: Branch and Bound
pagenum: 380; label: 16.6.1
title: Example
pagenum: 380; label: 16.6.2
title: Sequential Algorithm
pagenum: 382; label: 16.6.3
title: Analysis
pagenum: 385; label: 16.7
title: Parallel Branch and Bound
pagenum: 385; label: 16.7.1
title: Storing and Sharing Unexamined Subproblems
pagenum: 386; label: 16.7.2
title: Efficiency
pagenum: 387; label: 16.7.3
title: Halting Conditions
pagenum: 387; label: 16.8
title: Searching Game Trees
pagenum: 388; label: 16.8.1
title: Minimax Algorithm
pagenum: 388; label: 16.8.2
title: Alpha-Beta Pruning
pagenum: 392; label: 16.8.3
title: Enhancements to Alpha-Beta Pruning
pagenum: 395; label: 16.9
title: Parallel Alpha-Beta Search
pagenum: 395; label: 16.9.1
title: Parallel Aspiration Search
pagenum: 396; label: 16.9.2
title: Parallel Subtree Evaluation
pagenum: 396; label: 16.9.3
title: Distributed Tree Search
pagenum: 397; label: 16.10
title: Summary
pagenum: 399; label: 16.11
title: Key Terms
pagenum: 400; label: 16.12
title: Bibliographic Notes
pagenum: 400; label: 16.13
title: Exercises
pagenum: 401; label: Chapter 17
title: Shared-Memory Programming
pagenum: 404; label: 17.1
title: Introduction
pagenum: 404; label: 17.2
title: The Shared-Memory Model
pagenum: 405; label: 17.3
title: Parallel `for` Loops
pagenum: 407; label: 17.3.1
title: `parallel for` pragma
pagenum: 408; label: 17.3.2
title: Function `omp_get_num_procs`
pagenum: 410; label: 17.3.3
title: Function `omp_set_num_threads`
pagenum: 410; label: 17.4
title: Declaring Private Variables
pagenum: 410; label: 17.4.1
title: `private` Clause
pagenum: 411; label: 17.4.2
title: `firstprivate` Clause
pagenum: 412; label: 17.4.3
title: `lastprivate` Clause
pagenum: 412; label: 17.5
title: Critical Sections
pagenum: 413; label: 17.5.1
title: `critical` Pragma
pagenum: 415; label: 17.6
title: Reductions
pagenum: 415; label: 17.7
title: Performance Improvements
pagenum: 417; label: 17.7.1
title: Inverting Loops
pagenum: 417; label: 17.7.2
title: Conditionally Executing Loops
pagenum: 418; label: 17.7.3
title: Scheduling Loops
pagenum: 419; label: 17.8
title: More General Data Parallelism
pagenum: 421; label: 17.8.1
title: `parallel` Pragma
pagenum: 422; label: 17.8.2
title: Function `omp_get_thread_num`
pagenum: 423; label: 17.8.3
title: Function `omp_get_num_threads`
pagenum: 425; label: 17.8.4
title: `for` Pragma
pagenum: 425; label: 17.8.5
title: `single` Pragma
pagenum: 427; label: 17.8.6
title: `nowait` Clause
pagenum: 427; label: 17.9
title: Functional Parallelism
pagenum: 428; label: 17.9.1
title: `parallel` sections Pragma
pagenum: 429; label: 17.9.2
title: `section` Pragma
pagenum: 429; label: 17.9.3
title: `sections` Pragma
pagenum: 429; label: 17.10
title: Summary
pagenum: 430; label: 17.11
title: Key Terms
pagenum: 432; label: 17.12
title: Bibliographic Notes
pagenum: 432; label: 17.13
title: Exercises
pagenum: 433; label: Chapter 18
title: Combining MPI and OpenMP
pagenum: 436; label: 18.1
title: Introduction
pagenum: 436; label: 18.2
title: Conjugate Gradient Method
pagenum: 438; label: 18.2.1
title: MPI Program
pagenum: 438; label: 18.2.2
title: Functional Profiling
pagenum: 442; label: 18.2.3
title: Parallelizing Function `matrix_vector_product`
pagenum: 442; label: 18.2.4
title: Benchmarking
pagenum: 443; label: 18.3
title: Jacobi Method
pagenum: 444; label: 18.3.1
title: Profiling MPI Program
pagenum: 444; label: 18.3.2
title: Parallelizing Function `find_steady_state`
pagenum: 444; label: 18.3.3
title: Benchmarking
pagenum: 446; label: 18.4
title: Summary
pagenum: 448; label: 18.5
title: Exercises
pagenum: 448; label: Appendix A
title: MPI Functions
pagenum: 450; label: Appendix B
title: Utility Functions
pagenum: 485; label: B.1
title: Header File `MyMPI.h`
pagenum: 485; label: B.2
title: Source File `MyMPI.c`
pagenum: 486; label: Appendix C
title: Debugging MPI Programs
pagenum: 505; label: C.1
title: Introduction
pagenum: 505; label: C.2
title: Typical Bugs in MPI Programs
pagenum: 505; label: C.2.1
title: Bugs Resulting in Deadlock
pagenum: 505; label: C.2.2
title: Bugs Resulting in Incorrect Results
pagenum: 506; label: C.2.3
title: Advantages of Collective Communications
pagenum: 507; label: C.3
title: Practical Debugging Strategies
pagenum: 507; label: Appendix D
title: Review of Complex Numbers
pagenum: 509; label: Appendix E
title: OpenMP Functions
pagenum: 513; title: Bibliography
pagenum: 515; title: Author Index
pagenum: 520; title: Subject Index
pagenum: 522