PART I CONCEPTS 1 Parallel Computen and Computation l .l Parallelism and Computing l .2 A Parallel Machine Model l .3 A Parallel Programming Model l .4 Parallel Algorithm Examples l .5 Summary Exercises Chapter Notes 2 Designing Parallel Algorithms 2. l Methodical Design 2.2 Partitioning 2. 3 Communication 2.4 Agglomeration 2.5 Mapping 2.6 Case Smdy: Atmosphere Model 2.7 Case Study: noorplan Optimization 2.8 Case Study: Computational Chemistry 2.9 Summary Exercises Chapter Notes 3 A Quantitative Basis for Design 3.l 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. IO Summary Exercises Chapter Notes 4 Putting Components Together 4.l Modalar Design Review 4.2 Modalarity 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 5 Compositional C++ ' 5.l 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. IO Performance Issues 5. l I Case Study: Channel Library 5. 12 Case Study: Fock Matrix Construction 5. 13 Summary Excercises Chapter Notes 6 Fortran M 6.l 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. I O Performance Issues 6. l l Case Study: Fock Matrix Construction 6. I 2 Summary Exercises Ckapter Notes 7 High Performance Fortran 7.l 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.S Case Study: Gaussian Elimination 7.9 Summary . Exercises Chapter Notes 8 Message Passing Interface 8. l 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 e. l Performance Analysis 9.2 Data Collection 9.3 Data Transformation and Visualization 9.4 Tools 9.5 Summary Exercises Chapter Notes PART III RESOURCES 10 Random Numbers 10.l Sequential Random Numbers IO.2 Parallel Random Numbers IO.3 Distributed Random Generators IO.4 Summary Exercises Chapter Notes 1 1 Hypercube Algorithms l l .l The Hypercube Template l I .2 Vector Reduction l I .3 Mauix Transposition l I .4 Mergeson I l .5 Summary Exercises Chapter Notes 12 Further Reading 13 About the Online Version 13. l Obtaining a Web Browser 13.2 Web Tours References Index