Example: Summing the Elements of a Matrix
Chapter 6 Implementations
6.1 A Single-Processor Kernel
6.2 A Multiprocessor Kernel
6.3 Implementing Semaphores in a Kernel
6.4 Implementing Monitors in a Kernel
6.5 Implementing Monitors Using Semaphores
PART II: Distributed Programming
Chapter 7 Message Passing
7.1 Asynchronous Message Passing
7.2 Filters: A Sorting Network
7.3 Clients and Servers
Active Monitors
A Self-Scheduling Disk Driver
File Servers: Conversational Continuity
7.4 Interacting Peers: Exchanging Values
7.5 Synchronous Message Passing
7.6 Case Study: CSP
Communication Statements
Guarded Communication
Example: The Sieve of Eratosthenes
7.7 Case Study: Linda
Tuple Space and Process Interaction
Example: Prime Numbers with a Bag of Tasks
7.8 Case Study: MPI
Basic Functions
Global Communication and Synchronization
7.9 Case Study: Java
Networks and Sockets
Example: A Remote File Reader
Chapter 8 RPC and Rendezvous
8.1 Remote Procedure Call
Synchronization in Modules
A Time Server Caches in a Distributed File System
A Sorting Network of Merge Filters
Interacting Peers: Exchanging Values
8.2 Rendezvous
Input Statements
Client/Server Examples
A Sorting Network of Merge Filters
Interacting Peers: Exchanging Values
8.3 A Multiple Primitives Notation
Invoking and Servicing Operations
Examples
8.4 Readers/Writers Revisited
Encapsulated Access
Replicated Files
8.5 Case Study: Java
Remote Method Invocation
Example: A Remote Database
8.6 Case Study: Ada
Tasks
Rendezvous
Protected Types
Example: The Dining Philosophers
8.7 Case Study: SR
Resources and Globals
Communication and Synchronization
Example: Critical Section Simulation
Chapter 9 Paradigms for Process Interaction
9.1 Managers/Workers (Distributed Bag of Tasks)
Sparse Matrix Multiplication
Adaptive Quadrature Revisited
9.2 Heartbeat Algorithms
Image Processing: Region Labeling
Cellular Automata: The Game of Life
9.3 Pipeline Algorithms
A Distributed Matrix Multiplication Pipeline
Matrix Multiplication by Blocks
9.3 Probe/Echo Algorithms
Broadcast in a Network
Computing the Topology of a Network
9.4 Broadcast Algorithms
Logical Clocks and Event Ordering
Distributed Semaphores
9.5 Token-Passing Algorithms
Distributed Mutual Exclusion
Termination Detection in a Ring
Termination Detection in a Graph
9.6 Replicated Servers
Distributed Dining Philosophers
Decentralized Dining Philosophers
Chapter 10 Implementations
10.1 Asynchronous Message Passing
Shared-Memory Kernel
Distributed Kernel
10.2 Synchronous Message Passing
Direct Communication Using Asynchronous Messages
Guarded Communication Using a Clearing House
10.3 RPC and Rendezvous
RPC in a Kernel
Rendezvous Using Asynchronous Message Passing
Multiple Primitives in a Kernel
10.4 Distributed Shared Memory
Implementation Overview
Page Consistency Protocols
PART III Parallel Programming:
Speedup and Efficiency
Overheads and Challenges
Chapter 11 Scientific Computing
11.1 Grid Computations
Laplace's Equation
Sequential Jacobi Iteration
Shared Variable Program
Message Passing Program
Red/Black Successive Over Relaxation
Multigrid Methods
11.2 Particle Computations
The Gravitational #N-Body Problem
Shared Variable Program
Message Passing Programs
Approximate Methods
11.3 Matrix Computations
Gaussian Elimination
LU Decomposition
Shared Variable Program
Message Passing Program
Chapter 12 Languages, Compilers, Libraries, and Tools
12.1 Parallel Programming Libraries
Case Study: Pthreads
Case Study: MPI
Case Study: OpenMP
12.2 Parallelizing Compilers
Dependence Analysis
Program Transformations
12.3 Other Programming Models
Imperative Languages
Coordination Languages Data Parallel Languages
Functional Languages
Abstract Models
Case Study: High Performance Fortran (HPF)
12.3 Parallel Programming Tools
Performance Measurement and Visualization
Metacomputers and Metacomputing
Case Study: The Globus Toolkit