Cover image for Parallel programming in C with MPI and openMP
Title:
Parallel programming in C with MPI and openMP
Publication Information:
Dubuque, Iowa : McGraw-Hill, 2004
ISBN:
9780072822564

Available:*

Library
Item Barcode
Call Number
Material Type
Item Category 1
Status
Searching...
30000010038251 QA76.73.C15 Q55 2004 Open Access Book Book
Searching...
Searching...
30000004859116 QA76.73.C15 Q55 2004 Open Access Book Book
Searching...
Searching...
30000010077024 QA76.73.C15 Q55 2004 Unknown 1:CHECKING
Searching...

On Order

Summary

Summary

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

Prefacep. xiv
Chapter 1 Motivation and Historyp. 1
1.1 Introductionp. 1
1.2 Modern Scientific Methodp. 3
1.3 Evolution of Supercomputingp. 4
1.4 Modern Parallel Computersp. 5
1.5 Seeking Concurrencyp. 9
1.6 Data Clusteringp. 14
1.7 Programming Parallel Computersp. 17
1.8 Summaryp. 21
1.9 Key Termsp. 22
1.10 Bibliographic Notesp. 22
1.11 Exercisesp. 23
Chapter 2 Parallel Architecturesp. 27
2.1 Introductionp. 27
2.2 Interconnection Networksp. 28
2.3 Processor Arraysp. 37
2.4 Multiprocessorsp. 43
2.5 Multicomputersp. 49
2.6 Flynn's Taxonomyp. 54
2.7 Summaryp. 58
2.8 Key Termsp. 59
2.9 Bibliographic Notesp. 59
2.10 Exercisesp. 60
Chapter 3 Parallel Algorithm Designp. 63
3.1 Introductionp. 63
3.2 The Task/Channel Modelp. 63
3.3 Foster's Design Methodologyp. 64
3.4 Boundary Value Problemp. 73
3.5 Finding the Maximump. 77
3.6 The n-Body Problemp. 82
3.7 Adding Data Inputp. 86
3.8 Summaryp. 89
3.9 Key Termsp. 90
3.10 Bibliographic Notesp. 90
3.11 Exercisesp. 90
Chapter 4 Message-Passing Programmingp. 93
4.1 Introductionp. 93
4.2 The Message-Passing Modelp. 94
4.3 The Message-Passing Interfacep. 95
4.4 Circuit Satisfiabilityp. 96
4.5 Introducing Collective Communicationp. 104
4.6 Benchmarking Parallel Performancep. 108
4.7 Summaryp. 110
4.8 Key Termsp. 110
4.9 Bibliographic Notesp. 110
4.10 Exercisesp. 111
Chapter 5 The Sieve of Eratosthenesp. 115
5.1 Introductionp. 115
5.2 Sequential Algorithmp. 115
5.3 Sources of Parallelismp. 117
5.4 Data Decomposition Optionsp. 117
5.5 Developing the Parallel Algorithmp. 121
5.6 Analysis of Parallel Sieve Algorithmp. 122
5.7 Documenting the Parallel Programp. 123
5.8 Benchmarkingp. 128
5.9 Improvementsp. 129
5.10 Summaryp. 133
5.11 Key Termsp. 134
5.12 Bibliographic Notesp. 134
5.13 Exercisesp. 134
Chapter 6 Floyd's Algorithmp. 137
6.1 Introductionp. 137
6.2 The All-Pairs Shortest-Path Problemp. 137
6.3 Creating Arrays at Run Timep. 139
6.4 Designing the Parallel Algorithmp. 140
6.5 Point-to-Point Communicationp. 145
6.6 Documenting the Parallel Programp. 149
6.7 Analysis and Benchmarkingp. 151
6.8 Summaryp. 154
6.9 Key Termsp. 154
6.10 Bibliographic Notesp. 154
6.11 Exercisesp. 154
Chapter 7 Performance Analysisp. 159
7.1 Introductionp. 159
7.2 Speedup and Efficiencyp. 159
7.3 Amdahl's Lawp. 161
7.4 Gustafson-Barsis's Lawp. 164
7.5 The Karp-Flatt Metricp. 167
7.6 The Isoefficiency Metricp. 170
7.7 Summaryp. 174
7.8 Key Termsp. 175
7.9 Bibliographic Notesp. 175
7.10 Exercisesp. 176
Chapter 8 Matrix-Vector Multiplicationp. 178
8.1 Introductionp. 178
8.2 Sequential Algorithmp. 179
8.3 Data Decomposition Optionsp. 180
8.4 Rowwise Block-Striped Decompositionp. 181
8.5 Columnwise Block-Striped Decompositionp. 189
8.6 Checkerboard Block Decompositionp. 199
8.7 Summaryp. 210
8.8 Key Termsp. 211
8.9 Bibliographic Notesp. 211
8.10 Exercisesp. 211
Chapter 9 Document Classificationp. 216
9.1 Introductionp. 216
9.2 Parallel Algorithm Designp. 217
9.3 Nonblocking Communicationsp. 223
9.4 Documenting the Parallel Programp. 226
9.5 Enhancementsp. 232
9.6 Summaryp. 235
9.7 Key Termsp. 236
9.8 Bibliographic Notesp. 236
9.9 Exercisesp. 236
Chapter 10 Monte Carlo Methodsp. 239
10.1 Introductionp. 239
10.2 Sequential Random Number Generatorsp. 243
10.3 Parallel Random Number Generatorsp. 245
10.4 Other Random Number Distributionsp. 248
10.5 Case Studiesp. 253
10.6 Summaryp. 268
10.7 Key Termsp. 269
10.8 Bibliographic Notesp. 269
10.9 Exercisesp. 270
Chapter 11 Matrix Multiplicationp. 273
11.1 Introductionp. 273
11.2 Sequential Matrix Multiplicationp. 274
11.3 Rowwise Block-Striped Parallel Algorithmp. 277
11.4 Cannon's Algorithmp. 281
11.5 Summaryp. 286
11.6 Key Termsp. 287
11.7 Bibliographic Notesp. 287
11.8 Exercisesp. 287
Chapter 12 Solving Linear Systemsp. 290
12.1 Introductionp. 290
12.2 Terminologyp. 291
12.3 Back Substitutionp. 292
12.4 Gaussian Eliminationp. 296
12.5 Iterative Methodsp. 306
12.6 The Conjugate Gradient Methodp. 309
12.7 Summaryp. 313
12.8 Key Termsp. 314
12.9 Bibliographic Notesp. 314
12.10 Exercisesp. 314
Chapter 13 Finite Difference Methodsp. 318
13.1 Introductionp. 318
13.2 Partial Differential Equationsp. 320
13.3 Vibrating Stringp. 322
13.4 Steady-State Heat Distributionp. 329
13.5 Summaryp. 334
13.6 Key Termsp. 335
13.7 Bibliographic Notesp. 335
13.8 Exercisesp. 335
Chapter 14 Sortingp. 338
14.1 Introductionp. 338
14.2 Quicksortp. 339
14.3 A Parallel Quicksort Algorithmp. 340
14.4 Hyperquicksortp. 343
14.5 Parallel Sorting by Regular Samplingp. 346
14.6 Summaryp. 349
14.7 Key Termsp. 349
14.8 Bibliographic Notesp. 350
14.9 Exercisesp. 350
Chapter 15 The Fast Fourier Transformp. 353
15.1 Introductionp. 353
15.2 Fourier Analysisp. 353
15.3 The Discrete Fourier Transformp. 355
15.4 The Fast Fourier Transformp. 360
15.5 Parallel Program Designp. 363
15.6 Summaryp. 367
15.7 Key Termsp. 367
15.8 Bibliographic Notesp. 367
15.9 Exercisesp. 367
Chapter 16 Combinatorial Searchp. 369
16.1 Introductionp. 369
16.2 Divide and Conquerp. 370
16.3 Backtrack Searchp. 371
16.4 Parallel Backtrack Searchp. 374
16.5 Distributed Termination Detectionp. 377
16.6 Branch and Boundp. 380
16.7 Parallel Branch and Boundp. 385
16.8 Searching Game Treesp. 388
16.9 Parallel Alpha-Beta Searchp. 395
16.10 Summaryp. 399
16.11 Key Termsp. 400
16.12 Bibliographic Notesp. 400
16.13 Exercisesp. 401
Chapter 17 Shared-Memory Programmingp. 404
17.1 Introductionp. 404
17.2 The Shared-Memory Modelp. 405
17.3 Parallel for Loopsp. 407
17.4 Declaring Private Variablesp. 410
17.5 Critical Sectionsp. 413
17.6 Reductionsp. 415
17.7 Performance Improvementsp. 417
17.8 More General Data Parallelismp. 421
17.9 Functional Parallelismp. 428
17.10 Summaryp. 430
17.11 Key Termsp. 432
17.12 Bibliographic Notesp. 432
17.13 Exercisesp. 433
Chapter 18 Combining MPI and OpenMPp. 436
18.1 Introductionp. 436
18.2 Conjugate Gradient Methodp. 438
18.3 Jacobi Methodp. 444
18.4 Summaryp. 448
18.5 Exercisesp. 448
Appendix A MPI Functionsp. 450
Appendix B Utility Functionsp. 485
B.1 Header File MyMPI.hp. 485
B.2 Source File MyMPI.cp. 486
Appendix C Debugging MPI Programsp. 505
C.1 Introductionp. 505
C.2 Typical Bugs in MPI Programsp. 505
C.3 Practical Debugging Strategiesp. 507
Appendix D Review of Complex Numbersp. 509
Appendix E OpenMP Functionsp. 513
Bibliographyp. 515
Author Indexp. 520
Subject Indexp. 522