Muutke küpsiste eelistusi

Parallel Scientific Computation: A Structured Approach Using BSP 2nd Revised edition [Kõva köide]

(Professor in scientific computing, Mathematics Institute, Utrecht University)
  • Formaat: Hardback, 410 pages, kõrgus x laius x paksus: 240x162x24 mm, kaal: 800 g
  • Ilmumisaeg: 30-Sep-2020
  • Kirjastus: Oxford University Press
  • ISBN-10: 0198788347
  • ISBN-13: 9780198788348
  • Formaat: Hardback, 410 pages, kõrgus x laius x paksus: 240x162x24 mm, kaal: 800 g
  • Ilmumisaeg: 30-Sep-2020
  • Kirjastus: Oxford University Press
  • ISBN-10: 0198788347
  • ISBN-13: 9780198788348
Parallel Scientific Computation presents a methodology for designing parallel algorithms and writing parallel computer programs for modern computer architectures with multiple processors.

Building upon the wide-ranging success of the first edition, Parallel Scientific Computation presents a single unified approach to using a range of parallel computers, from a small desktop computer to a massively parallel computer. The author explains how to use the bulk synchronous parallel (BSP) model to design and implement parallel algorithms in the areas of scientific computing and big data, and provides a full treatment of core problems in these areas, starting from a high-level problem description, via a sequential solution algorithm to a parallel solution algorithm and an actual parallel program written in BSPlib.

Every chapter of the book contains a theoretical section and a practical section presenting a parallel program and numerical experiments on a modern parallel computer to put the theoretical predictions and cost analysis to the test. Every chapter also presents extensive bibliographical notes with additional discussions and pointers to relevant literature, and numerous exercises which are suitable as graduate student projects.

The second edition provides new material relevant for big-data science such as sorting and graph algorithms, and it provides a BSP approach towards new hardware developments such as hierarchical architectures with both shared and distributed memory. A single, simple hybrid BSP system suffices to handle both types of parallelism efficiently, and there is no need to master two systems, as often happens in alternative approaches. Furthermore, the second edition brings all algorithms used up to date, and it includes new material on high-performance linear system solving by LU decomposition, and improved data partitioning for sparse matrix computations.

The book is accompanied by a software package BSPedupack, freely available online from the author's homepage, which contains all programs of the book and a set of test driver programs. This package written in C can be run using modern BSPlib implementations such as MulticoreBSP for C or BSPonMPI.

Arvustused

The author presents a detailed study describing how parallel computation can be applied to a collection of numerical problems. He considers LU decomposition of dense matrices, the fast Fourier transform (FFT), multiplication of a sparse matrix by a dense vector, as well as matching vertices in a sparse graph and sorting. He uses these to teach design and implementation of well-structured efficient parallel algorithms...The book is best suited for a graduate course in parallel scientific processing for mathematics or computer science students. * Bill Satzer, MAA Reviews *

1 Introduction
1(73)
1.1 Parallel computing is everywhere
1(1)
1.2 The BSP model
2(7)
1.3 BSP algorithm for inner product computation
9(4)
1.4 Starting with BSPlib: example program bspinprod
13(11)
1.5 BSP benchmarking
24(3)
1.6 Example program bspbench
27(5)
1.7 Benchmark results
32(6)
1.8 Sorting
38(6)
1.9 Example function bspsort
44(9)
1.10 Experimental results for samplesort on a Cartesius node
53(4)
1.11 Bibliographic notes
57(12)
1.11.1 BSP-related models of parallel computation
57(1)
1.11.2 BSP libraries
58(4)
1.11.3 The non-BSP world: message passing and threads
62(4)
1.11.4 Benchmarking
66(1)
1.11.5 Sorting
67(2)
1.12 Exercises
69(5)
2 LU decomposition
74(60)
2.1 The problem
74(1)
2.2 Sequential LU decomposition
75(7)
2.3 Basic parallel algorithm
82(7)
2.4 Two-phase broadcasting and other improvements
89(7)
2.5 High-performance LU decomposition
96(4)
2.6 Example function bsplu
100(13)
2.7 Experimental results on the Cori supercomputer
113(6)
2.8 Bibliographic notes
119(3)
2.8.1 Matrix distributions
119(1)
2.8.2 Collective communication
120(1)
2.8.3 Parallel matrix computations
121(1)
2.9 Exercises
122(12)
3 The fast Fourier transform
134(56)
3.1 The problem
134(2)
3.2 Sequential recursive fast Fourier transform
136(3)
3.3 Sequential nonrecursive algorithm
139(9)
3.4 Parallel algorithm
148(7)
3.5 Weight reduction
155(3)
3.6 Example function bspfft
158(8)
3.7 Experimental results on the Cartesius supercomputer
166(7)
3.8 Bibliographic notes
173(7)
3.8.1 Sequential FFT algorithms
173(3)
3.8.2 Parallel FFT algorithms
176(3)
3.8.3 Applications
179(1)
3.9 Exercises
180(10)
4 Sparse matrix-vector multiplication
190(101)
4.1 The problem
190(5)
4.2 Sparse matrices and their data structures
195(6)
4.3 Parallel algorithm
201(7)
4.4 Cartesian matrix distribution
208(7)
4.5 Mondriaan distribution for general sparse matrices
215(10)
4.6 Fine-grain and medium-grain matrix distribution
225(6)
4.7 Vector distribution
231(6)
4.8 Random sparse matrices
237(7)
4.9 Laplacian matrices
244(11)
4.10 Parallel algorithm for hybrid-BSP
255(6)
4.11 Example function bspmv
261(8)
4.12 Experimental results on the Cartesius supercomputer
269(6)
4.13 Bibliographic notes
275(8)
4.13.1 Sparse matrix computations
275(2)
4.13.2 Parallel sparse matrix-vector multiplication algorithms
277(2)
4.13.3 Partitioning methods
279(4)
4.14 Exercises
283(8)
5 Graph matching
291(68)
5.1 The problem
291(2)
5.2 Sequential algorithm
293(5)
5.3 Suitors and sorting
298(7)
5.4 Parallel algorithm
305(5)
5.5 Correctness
310(4)
5.6 Tie-breaking
314(2)
5.7 Load balancing
316(2)
5.8 Further improvements
318(7)
5.9 Example function bspmatch
325(15)
5.10 Experimental results on the Cartesius supercomputer
340(6)
5.11 Bibliographic notes
346(5)
5.11.1 Sequential graph matching
346(2)
5.11.2 Parallel graph matching
348(1)
5.11.3 GraphBLAS
349(2)
5.12 Exercises
351(8)
Appendix A Auxiliary BSPedupack functions 359(4)
A.1 Header file bspedupack. h
359(1)
A.2 Utility file bspedupack. c
360(3)
Appendix B A quick reference guide to BSPlib 363(2)
References 365(18)
Index 383
Rob Bisseling is a full professor in Scientific Computing at the Mathematics Institute of Utrecht University, where he has held a position since 1993. Previously, he worked as a research mathematician at the Shell laboratory in Amsterdam, where he investigated various applications of parallel computing.