Next:
Contents
Up:
Designing and Building Parallel Programs
Contents
Preface
Terminology
Part I: Concepts
Part I: Concepts
1 Parallel Computers and Computation
1.1 Parallelism and Computing
1.2 A Parallel Machine Model
1.3 A Parallel Programming Model
1.4 Parallel Algorithm Examples
1.5 Summary
Exercises
Chapter Notes
2 Designing Parallel Algorithms
2.1 Methodical Design
2.2 Partitioning
2.3 Communication
2.4 Agglomeration
2.5 Mapping
2.6 Case Study: Atmosphere Model
2.7 Case Study: Floorplan Optimization
2.8 Case Study: Computational Chemistry
2.9 Summary
Exercises
Chapter Notes
3 A Quantitative Basis for Design
3.1 Defining Performance
3.2 Approaches to Performance Modeling
3.3 Developing Models
3.4 Scalability Analysis
3.5 Experimental Studies
3.6 Evaluating Implementations
3.7 A Refined Communication Cost Model
3.8 Input/Output
3.9 Case Study: Shortest-Path Algorithms
3.10 Summary
Exercises
Chapter Notes
4 Putting Components Together
4.1 Modular Design Review
4.2 Modularity and Parallel Computing
4.3 Performance Analysis
4.4 Case Study: Convolution
4.5 Case Study: Tuple Space
4.6 Case Study: Matrix Multiplication
4.7 Summary
Exercises
Chapter Notes
Part II: Tools
Part II: Tools
5 Compositional C++
5.1 C++ Review
5.2 CC++ Introduction
5.3 Concurrency
5.4 Locality
5.5 Communication
5.6 Asynchronous Communication
5.7 Determinism
5.8 Mapping
5.9 Modularity
5.10 Performance Issues
5.11 Case Study: Channel Library
5.12 Case Study: Fock Matrix Construction
5.13 Summary
Exercises
Chapter Notes
6 Fortran M
6.1 FM Introduction
6.2 Concurrency
6.3 Communication
6.4 Unstructured Communication
6.5 Asynchronous Communication
6.6 Determinism
6.7 Argument Passing
6.8 Mapping
6.9 Modularity
6.10 Performance Issues
6.11 Case Study: Fock Matrix Construction
6.12 Summary
Exercises
Chapter Notes
7 High Performance Fortran
7.1 Data Parallelism
7.2 Fortran 90
7.3 Data Distribution
7.4 Concurrency
7.5 Dummy Arguments and Modularity
7.6 Other HPF Features
7.7 Performance Issues
7.8 Case Study: Gaussian Elimination
7.9 Summary
Exercises
Chapter Notes
8 Message Passing Interface
8.1 The MPI Programming Model
8.2 MPI Basics
8.3 Global Operations
8.4 Asynchronous Communication
8.5 Modularity
8.6 Other MPI Features
8.7 Performance Issues
8.8 Case Study: Earth System Model
8.9 Summary
Exercises
Chapter Notes
9 Performance Tools
9.1 Performance Analysis
9.2 Data Collection
9.3 Data Transformation and Visualization
9.4 Tools
9.5 Summary
Exercises
Chapter Notes
Part III: Resources
Part III: Resources
10 Random Numbers
10.1 Sequential Random Numbers
10.2 Parallel Random Numbers
10.3 Distributed Random Generators
10.4 Summary
Exercises
Chapter Notes
11 Hypercube Algorithms
11.1 The Hypercube Template
11.2 Vector Reduction
11.3 Matrix Transposition
11.4 Mergesort
11.5 Summary
Exercises
Chapter Notes
12 Further Reading
References
Index
© Copyright 1995 by
Ian Foster