
Parallel programming in C with MPI and openMP
Başlık:
Parallel programming in C with MPI and openMP
Yazar:
Quinn, Michael J. (Michael Jay)
ISBN:
9780072822564
Ek Yazar:
Yayım Bilgisi:
Dubuque, Iowa : McGraw-Hill, c2004.
Fiziksel Tanım:
xiv, 529 p. : ill. ; 24 cm.
Contents:
Motivation and history -- Parallel architectures -- Parallel algorithm design -- Message-passing programming -- The sieve of erathosthenes -- Floyd's algorithm -- Performance analysis -- Matrix-vector multiplication -- Document classification -- Monte Carlo methods -- Matrix multiplication -- Solving linear systems -- Finite difference methods -- Sorting -- The fast Fourier transform -- Combinatorial search -- Shared-memory programming -- Combining MPI and OpenMP.
Mevcut:*
Library | Materyal Türü | Barkod | Yer Numarası | Durum |
|---|---|---|---|---|
Searching... Pamukkale Merkez Kütüphanesi | Kitap | 0039708 | QA76.73Q85 2004 | Searching... Unknown |
Bound With These Titles
On Order
Özet
Özet
This volume gives a high-level overview of parallel architectures, including processor arrays, centralized multi-processors, distributed multi-processors, commercial multi-computers and commodity clusters. A six-chapter tutorial introduces 25 MPI functions by developing parallel programs to solve a series of increasingly difficult problems. Each program is taken from problem description through design and analysis to implementation and benchmarking on an actual commodity cluster, providing the reader with a wealth of examples.
Table of Contents
| Preface | p. xiv |
| Chapter 1 Motivation and History | p. 1 |
| 1.1 Introduction | p. 1 |
| 1.2 Modern Scientific Method | p. 3 |
| 1.3 Evolution of Supercomputing | p. 4 |
| 1.4 Modern Parallel Computers | p. 5 |
| 1.5 Seeking Concurrency | p. 9 |
| 1.6 Data Clustering | p. 14 |
| 1.7 Programming Parallel Computers | p. 17 |
| 1.8 Summary | p. 21 |
| 1.9 Key Terms | p. 22 |
| 1.10 Bibliographic Notes | p. 22 |
| 1.11 Exercises | p. 23 |
| Chapter 2 Parallel Architectures | p. 27 |
| 2.1 Introduction | p. 27 |
| 2.2 Interconnection Networks | p. 28 |
| 2.3 Processor Arrays | p. 37 |
| 2.4 Multiprocessors | p. 43 |
| 2.5 Multicomputers | p. 49 |
| 2.6 Flynn's Taxonomy | p. 54 |
| 2.7 Summary | p. 58 |
| 2.8 Key Terms | p. 59 |
| 2.9 Bibliographic Notes | p. 59 |
| 2.10 Exercises | p. 60 |
| Chapter 3 Parallel Algorithm Design | p. 63 |
| 3.1 Introduction | p. 63 |
| 3.2 The Task/Channel Model | p. 63 |
| 3.3 Foster's Design Methodology | p. 64 |
| 3.4 Boundary Value Problem | p. 73 |
| 3.5 Finding the Maximum | p. 77 |
| 3.6 The n-Body Problem | p. 82 |
| 3.7 Adding Data Input | p. 86 |
| 3.8 Summary | p. 89 |
| 3.9 Key Terms | p. 90 |
| 3.10 Bibliographic Notes | p. 90 |
| 3.11 Exercises | p. 90 |
| Chapter 4 Message-Passing Programming | p. 93 |
| 4.1 Introduction | p. 93 |
| 4.2 The Message-Passing Model | p. 94 |
| 4.3 The Message-Passing Interface | p. 95 |
| 4.4 Circuit Satisfiability | p. 96 |
| 4.5 Introducing Collective Communication | p. 104 |
| 4.6 Benchmarking Parallel Performance | p. 108 |
| 4.7 Summary | p. 110 |
| 4.8 Key Terms | p. 110 |
| 4.9 Bibliographic Notes | p. 110 |
| 4.10 Exercises | p. 111 |
| Chapter 5 The Sieve of Eratosthenes | p. 115 |
| 5.1 Introduction | p. 115 |
| 5.2 Sequential Algorithm | p. 115 |
| 5.3 Sources of Parallelism | p. 117 |
| 5.4 Data Decomposition Options | p. 117 |
| 5.5 Developing the Parallel Algorithm | p. 121 |
| 5.6 Analysis of Parallel Sieve Algorithm | p. 122 |
| 5.7 Documenting the Parallel Program | p. 123 |
| 5.8 Benchmarking | p. 128 |
| 5.9 Improvements | p. 129 |
| 5.10 Summary | p. 133 |
| 5.11 Key Terms | p. 134 |
| 5.12 Bibliographic Notes | p. 134 |
| 5.13 Exercises | p. 134 |
| Chapter 6 Floyd's Algorithm | p. 137 |
| 6.1 Introduction | p. 137 |
| 6.2 The All-Pairs Shortest-Path Problem | p. 137 |
| 6.3 Creating Arrays at Run Time | p. 139 |
| 6.4 Designing the Parallel Algorithm | p. 140 |
| 6.5 Point-to-Point Communication | p. 145 |
| 6.6 Documenting the Parallel Program | p. 149 |
| 6.7 Analysis and Benchmarking | p. 151 |
| 6.8 Summary | p. 154 |
| 6.9 Key Terms | p. 154 |
| 6.10 Bibliographic Notes | p. 154 |
| 6.11 Exercises | p. 154 |
| Chapter 7 Performance Analysis | p. 159 |
| 7.1 Introduction | p. 159 |
| 7.2 Speedup and Efficiency | p. 159 |
| 7.3 Amdahl's Law | p. 161 |
| 7.4 Gustafson-Barsis's Law | p. 164 |
| 7.5 The Karp-Flatt Metric | p. 167 |
| 7.6 The Isoefficiency Metric | p. 170 |
| 7.7 Summary | p. 174 |
| 7.8 Key Terms | p. 175 |
| 7.9 Bibliographic Notes | p. 175 |
| 7.10 Exercises | p. 176 |
| Chapter 8 Matrix-Vector Multiplication | p. 178 |
| 8.1 Introduction | p. 178 |
| 8.2 Sequential Algorithm | p. 179 |
| 8.3 Data Decomposition Options | p. 180 |
| 8.4 Rowwise Block-Striped Decomposition | p. 181 |
| 8.5 Columnwise Block-Striped Decomposition | p. 189 |
| 8.6 Checkerboard Block Decomposition | p. 199 |
| 8.7 Summary | p. 210 |
| 8.8 Key Terms | p. 211 |
| 8.9 Bibliographic Notes | p. 211 |
| 8.10 Exercises | p. 211 |
| Chapter 9 Document Classification | p. 216 |
| 9.1 Introduction | p. 216 |
| 9.2 Parallel Algorithm Design | p. 217 |
| 9.3 Nonblocking Communications | p. 223 |
| 9.4 Documenting the Parallel Program | p. 226 |
| 9.5 Enhancements | p. 232 |
| 9.6 Summary | p. 235 |
| 9.7 Key Terms | p. 236 |
| 9.8 Bibliographic Notes | p. 236 |
| 9.9 Exercises | p. 236 |
| Chapter 10 Monte Carlo Methods | p. 239 |
| 10.1 Introduction | p. 239 |
| 10.2 Sequential Random Number Generators | p. 243 |
| 10.3 Parallel Random Number Generators | p. 245 |
| 10.4 Other Random Number Distributions | p. 248 |
| 10.5 Case Studies | p. 253 |
| 10.6 Summary | p. 268 |
| 10.7 Key Terms | p. 269 |
| 10.8 Bibliographic Notes | p. 269 |
| 10.9 Exercises | p. 270 |
| Chapter 11 Matrix Multiplication | p. 273 |
| 11.1 Introduction | p. 273 |
| 11.2 Sequential Matrix Multiplication | p. 274 |
| 11.3 Rowwise Block-Striped Parallel Algorithm | p. 277 |
| 11.4 Cannon's Algorithm | p. 281 |
| 11.5 Summary | p. 286 |
| 11.6 Key Terms | p. 287 |
| 11.7 Bibliographic Notes | p. 287 |
| 11.8 Exercises | p. 287 |
| Chapter 12 Solving Linear Systems | p. 290 |
| 12.1 Introduction | p. 290 |
| 12.2 Terminology | p. 291 |
| 12.3 Back Substitution | p. 292 |
| 12.4 Gaussian Elimination | p. 296 |
| 12.5 Iterative Methods | p. 306 |
| 12.6 The Conjugate Gradient Method | p. 309 |
| 12.7 Summary | p. 313 |
| 12.8 Key Terms | p. 314 |
| 12.9 Bibliographic Notes | p. 314 |
| 12.10 Exercises | p. 314 |
| Chapter 13 Finite Difference Methods | p. 318 |
| 13.1 Introduction | p. 318 |
| 13.2 Partial Differential Equations | p. 320 |
| 13.3 Vibrating String | p. 322 |
| 13.4 Steady-State Heat Distribution | p. 329 |
| 13.5 Summary | p. 334 |
| 13.6 Key Terms | p. 335 |
| 13.7 Bibliographic Notes | p. 335 |
| 13.8 Exercises | p. 335 |
| Chapter 14 Sorting | p. 338 |
| 14.1 Introduction | p. 338 |
| 14.2 Quicksort | p. 339 |
| 14.3 A Parallel Quicksort Algorithm | p. 340 |
| 14.4 Hyperquicksort | p. 343 |
| 14.5 Parallel Sorting by Regular Sampling | p. 346 |
| 14.6 Summary | p. 349 |
| 14.7 Key Terms | p. 349 |
| 14.8 Bibliographic Notes | p. 350 |
| 14.9 Exercises | p. 350 |
| Chapter 15 The Fast Fourier Transform | p. 353 |
| 15.1 Introduction | p. 353 |
| 15.2 Fourier Analysis | p. 353 |
| 15.3 The Discrete Fourier Transform | p. 355 |
| 15.4 The Fast Fourier Transform | p. 360 |
| 15.5 Parallel Program Design | p. 363 |
| 15.6 Summary | p. 367 |
| 15.7 Key Terms | p. 367 |
| 15.8 Bibliographic Notes | p. 367 |
| 15.9 Exercises | p. 367 |
| Chapter 16 Combinatorial Search | p. 369 |
| 16.1 Introduction | p. 369 |
| 16.2 Divide and Conquer | p. 370 |
| 16.3 Backtrack Search | p. 371 |
| 16.4 Parallel Backtrack Search | p. 374 |
| 16.5 Distributed Termination Detection | p. 377 |
| 16.6 Branch and Bound | p. 380 |
| 16.7 Parallel Branch and Bound | p. 385 |
| 16.8 Searching Game Trees | p. 388 |
| 16.9 Parallel Alpha-Beta Search | p. 395 |
| 16.10 Summary | p. 399 |
| 16.11 Key Terms | p. 400 |
| 16.12 Bibliographic Notes | p. 400 |
| 16.13 Exercises | p. 401 |
| Chapter 17 Shared-Memory Programming | p. 404 |
| 17.1 Introduction | p. 404 |
| 17.2 The Shared-Memory Model | p. 405 |
| 17.3 Parallel for Loops | p. 407 |
| 17.4 Declaring Private Variables | p. 410 |
| 17.5 Critical Sections | p. 413 |
| 17.6 Reductions | p. 415 |
| 17.7 Performance Improvements | p. 417 |
| 17.8 More General Data Parallelism | p. 421 |
| 17.9 Functional Parallelism | p. 428 |
| 17.10 Summary | p. 430 |
| 17.11 Key Terms | p. 432 |
| 17.12 Bibliographic Notes | p. 432 |
| 17.13 Exercises | p. 433 |
| Chapter 18 Combining MPI and OpenMP | p. 436 |
| 18.1 Introduction | p. 436 |
| 18.2 Conjugate Gradient Method | p. 438 |
| 18.3 Jacobi Method | p. 444 |
| 18.4 Summary | p. 448 |
| 18.5 Exercises | p. 448 |
| Appendix A MPI Functions | p. 450 |
| Appendix B Utility Functions | p. 485 |
| B.1 Header File MyMPI.h | p. 485 |
| B.2 Source File MyMPI.c | p. 486 |
| Appendix C Debugging MPI Programs | p. 505 |
| C.1 Introduction | p. 505 |
| C.2 Typical Bugs in MPI Programs | p. 505 |
| C.3 Practical Debugging Strategies | p. 507 |
| Appendix D Review of Complex Numbers | p. 509 |
| Appendix E OpenMP Functions | p. 513 |
| Bibliography | p. 515 |
| Author Index | p. 520 |
| Subject Index | p. 522 |
Select a list
The following items were successfully added.
There was an error while adding the following items. Please try again.
One or more items could not be added because you are not logged in.
