Scientific computing has become an indispensable tool in numerous fields, such as physics, mechanics, biology,
finance and industry. For example, it enables us, thanks to efficient algorithms adapted to current computers, to
simulate, without the help of models or experimentations, the deflection of beams in bending, the sound level in a theater room or a fluid flowing around an aircraft wing.
This book presents the scientific computing techniques applied to parallel computing for the numerical simulation of large-scale problems; these problems result from systems modeled by partial differential equations. Computing concepts will be tackled via examples.
Implementation and programming techniques resulting from the finite element method will be presented for direct solvers, iterative solvers and domain decomposition methods, along with an introduction to MPI and OpenMP.
Preface xi
Introduction xv
Chapter 1. Computer Architectures 1
1.1. Different types of parallelism 1
1.1.1. Overlap, concurrency and parallelism 1
1.1.2. Temporal and spatial parallelism for arithmetic logic units 4
1.1.3. Parallelism and memory 6
1.2. Memory architecture 7
1.2.1. Interleaved multi-bank memory 7
1.2.2. Memory hierarchy 8
1.2.3. Distributed memory 13
1.3. Hybrid architecture 14
1.3.1. Graphics-type accelerators 14
1.3.2. Hybrid computers 16
Chapter 2. Parallelization and Programming Models 17
2.1. Parallelization 17
2.2. Performance criteria 19
2.2.1. Degree of parallelism 19