1 Introduction
1.1 What?
1.2 Why?
1.2.1 Parallelism
1.2.2 Coordination
1.3 How?
2 Basic Paradigms for Coordination
2.1 Introduction
2.2 Paradigms and methods
2.2.1 The paradigms
2.2.2 The programming methods
2.3 Where to use each?
2.4 An example
2.5 A methodology: how to do the three techniques relate?
2.6 Where are the basic techniques supported?
2.7 Exercises
3 Basic Data Structures
3.1 Linda
3.2 The basic distributed data structures
3.3 Structures with identical or indistinguishable elements
3.3.1 Message passing and live data structures
3.4 Exercises
4 Performance Measurement and Debugging
4.1 Introduction
4.2 Debugging
4.2.1 Software tools for debugging
4.2.2 Tuplescope
4.2.3 Logical problems in parallel debugging
4.3 Performance
4.3.1 Modeling the behavior of parallel programs
4.4 Exercises
5 Putting the Details Together
5.1 Result parallelism and live data structures
5.2 Using abstraction to get an efficient version
5.3 Comments on the agenda version
5.4 Specialist parallelism
5.5 Conclusions
5.6 Exercises
6 Databases: Starting with Agenda
6.1 Big Issues
6.2 Problem: database search
6.3 The problem discription
6.4 The sequential starting point
6.5 A first parallel version
6.6 Second version: Adding "Flow Control"
6.7 Third parallel version
6.8 Performance analysis
6.9 Conclusions
6.10 Exercises
7 Matrices: Starting with Result
7.1 Big issues
7.2 Problem: the wavefront computation of a matrix
7.3 The result-parallel approach
7.4 A result => agenda transformation
7.4.1 Granularity
7.4.2 An agenda-style solution
7.4.3 What should sub-blocks look like?
7.4.4 Task scheduling
7.5 Back to the original database problem
7.6 And the denoument: hybrid search
7.7 Conclusions
7.8 Exercises
8 Networks: Starting with Specialist
8.1 Big Issues
8.2 The data-stream analysis problem
8.3 The process trellis architecture
8.4 The specialist parallel approach
8.5 A specialist => agenda transformation
8.6 Static scheduling and realtime
8.6.1 A realtime scheduling algorithm
8.7 Conclusions
8.8 Exercises
9 Coordinated Programming
9.1 And now for something completely different
9.1.1 Two classical problems
9.1.2 A solution
9.1.3 The readers/writers problem
9.2 The meeting maker
9.2.1 The problem
9.2.2 The general form of a solution
9.2.3 Implementing the system
9.2.4 Characteristics of the solution: distribution
9.3 Exercises
Appendix: C-Linda Reference Manual
Bibliography
Index