Table of Contents
Preface xi
Introduction xiii
1 Architecture of parallel computing systems Mikhail Yu. Antonov 1
1.1 History of computers 1
1.2 Architecture of parallel computers 1
1.3 Modern supercomputers 4
1.4 Multicore computers 5
1.5 Operating system processes and threads 5
1.6 Programming multi-threaded applications 7
2 Multi-threaded programming Mikhail Yu. Antonov 9
2.1 POSIX threads 9
2.2 Creating and terminating threads 10
2.3 Thread life-cycle 11
2.4 Multi-threaded matrix summation 12
2.5 Thread synchronization 15
3 Essentials of OpenMP Petr A. Popov 21
3.1 OpenMP parallel programming model 21
3.2 The parallel construct 22
3.3 Work-sharing constructs 23
3.4 Work-sharing clauses 28
3.5 Synchronization 32
3.6 Dirichlet problem for the Poisson equation 36
4 MPI technology Aleksandr V. Grigoriev Ivan K. Sirditov Petr A. Popov 45
4.1 Preliminaries 45
4.2 Message-passing operations 50
4.3 Functions of collective interaction 53
4.4 Dirichlet problem for the Poisson equation 68
5 ParaView: An efficient toolkit for visualizing large datasets Aleksandr V. Grigoriev 77
5.1 An overview 77
5.2 Data file formats 78
5.3 Preparing data 82
5.4 Working with ParaView 90
5.5 Parallel visualization 95
6 Tools for developing parallel programs Victor S. Borisov 99
6.1 Installation of PTP 99
6.2 Program management 100
6.3 Parallel debugging 113
6.4 Performance analysis 116
7 Applied software Aleksandr G. Churbanov Petr N. Vabishchevich 121
7.1 Numerical simulation 121
7.2 Applied software engineering 124
7.3 Software architecture 125
7.4 General purpose applied software 127
7.5 Problem-oriented software 129
8 Geometry generation and meshing Maria V. Vasilieva Alexandr E. Kolesov 133
8.1 General information 133
8.2 The Gmsh workflow 135
8.3 NETGEN first took 149
9 PETSc for parallel solving of linear and nonlinear equations Nadezhda M. Afanasyeva Maria V. Vasilieva 153
9.1 Preliminaries 153
9.2 Solvers for systems of linear equations 163
9.3 Solution of nonlinear equations and systems 171
9.4 Solving unsteady problems 180
10 The FEniCS project Petr E. Zakharov 189
10.1 Preliminaries 189
10.2 Model problem 191
10.3 Finite element discretization 192
10.4 Program 194
10.5 Result processing 204
10.6 Nonlinear problems 208
10.7 Time-dependent problems 212
11 Numerical study of applied problems Victor S. Borisov Maria V. Vasilieva Alexandr E. Kolesov 219
11.1 Heat transfer with phase transitions 219
11.2 Lid-driven cavity flow 229
11.3 Steady thermoelasticity problem 240
11.4 Joule heating problem 249
Bibliography 263
Index 265