You are previewing Computational Technologies.
O'Reilly logo
Computational Technologies

Book Description

This book discusses questions of numerical solutions of applied problems on parallel computing systems. Nowadays, engineering and scientific computations are carried out on parallel computing systems, which provide parallel data processing on a few computing nodes. In constructing computational algorithms, mathematical problems are separated in relatively independent subproblems in order to solve them on a single computing node.

Table of Contents

  1. Title Page
  2. Copyright Page
  3. List of contributors
  4. Table of Contents
  5. Preface
  6. Introduction
  7. 1 Architecture of parallel computing systems
    1. 1.1 History of computers
    2. 1.2 Architecture of parallel computers
      1. 1.2.1 Flynn’s taxonomy of parallel architecture
      2. 1.2.2 Address-space organization
    3. 1.3 Modern supercomputers
    4. 1.4 Multicore computers
    5. 1.5 Operating system processes and threads
      1. 1.5.1 Processes
      2. 1.5.2 Threads
    6. 1.6 Programming multi-threaded applications
      1. 1.6.1 Multi-threading: pros and cons
      2. 1.6.2 Program models
  8. 2 Multi-threaded programming
    1. 2.1 POSIX threads
    2. 2.2 Creating and terminating threads
    3. 2.3 Thread life-cycle
    4. 2.4 Multi-threaded matrix summation
    5. 2.5 Thread synchronization
      1. 2.5.1 Semaphore
      2. 2.5.2 Mutex
  9. 3 Essentials of OpenMP
    1. 3.1 OpenMP parallel programming model
    2. 3.2 The parallel construct
    3. 3.3 Work-sharing constructs
      1. 3.3.1 The for directive
      2. 3.3.2 The sections directive
      3. 3.3.3 The single directive
      4. 3.3.4 Combined work-sharing constructs
    4. 3.4 Work-sharing clauses
      1. 3.4.1 The shared clause
      2. 3.4.2 The private clause
      3. 3.4.3 The schedule clause
      4. 3.4.4 The reduction clause
    5. 3.5 Synchronization
      1. 3.5.1 The barrier directive
      2. 3.5.2 The critical directive
      3. 3.5.3 The atomic directive
    6. 3.6 Dirichlet problem for the Poisson equation
      1. 3.6.1 Problem formulation
      2. 3.6.2 Parallel implementation
  10. 4 MPI technology
    1. 4.1 Preliminaries
      1. 4.1.1 General information
      2. 4.1.2 Compiling
      3. 4.1.3 Getting started with MPI
      4. 4.1.4 Determination of the number of processes and their ranks
      5. 4.1.5 The standard MPI timer
    2. 4.2 Message-passing operations
      1. 4.2.1 Data exchange between two processes
      2. 4.2.2 Data types
    3. 4.3 Functions of collective interaction
      1. 4.3.1 General information
      2. 4.3.2 Synchronization function
      3. 4.3.3 Broadcast function
      4. 4.3.4 Data gathering functions
      5. 4.3.5 Data distribution functions
      6. 4.3.6 Matrix-vector multiplication
      7. 4.3.7 Combined collective operations
      8. 4.3.8 Global computational operations
      9. 4.3.9 Scalar product of vectors
    4. 4.4 Dirichlet problem for the Poisson equation
      1. 4.4.1 Problem formulation
      2. 4.4.2 Parallel algorithm
  11. 5 ParaView: An efficient toolkit for visualizing large datasets
    1. 5.1 An overview
    2. 5.2 Data file formats
      1. 5.2.1 Serial formats
        1. 5.2.1.1 Structured points
        2. 5.2.1.2 Structured grid
        3. 5.2.1.3 Rectilinear grid
        4. 5.2.1.4 Polygonal representation
        5. 5.2.1.5 Unstructured grid
      2. 5.2.2 XML formats
    3. 5.3 Preparing data
      1. 5.3.1 Structured 2D grid
      2. 5.3.2 Structured 3D grid
      3. 5.3.3 Unstructured 2D grid
    4. 5.4 Working with ParaView
      1. 5.4.1 Loading data
      2. 5.4.2 Filters
      3. 5.4.3 Time series
    5. 5.5 Parallel visualization
      1. 5.5.1 The architecture of ParaView
      2. 5.5.2 Running in parallel mode
  12. 6 Tools for developing parallel programs
    1. 6.1 Installation of PTP
      1. 6.1.1 Prerequisites
      2. 6.1.2 Installing Eclipse with PTP
      3. 6.1.3 Installing the plug-in
    2. 6.2 Program management
      1. 6.2.1 Basics of PTP
      2. 6.2.2 Creating a connection with a remote computer
      3. 6.2.3 Creating projects
      4. 6.2.4 Project synchronization
      5. 6.2.5 Editing MPI programs
      6. 6.2.6 Building programs
      7. 6.2.7 Running programs
    3. 6.3 Parallel debugging
      1. 6.3.1 Debug configuration
      2. 6.3.2 Parallel debug perspective
      3. 6.3.3 Process managing
      4. 6.3.4 Breakpoints
    4. 6.4 Performance analysis
      1. 6.4.1 Installation
      2. 6.4.2 Configuration
      3. 6.4.3 Running
  13. 7 Applied software
    1. 7.1 Numerical simulation
      1. 7.1.1 Mathematical modeling
      2. 7.1.2 Basic steps of a computational experiment
      3. 7.1.3 Mathematical models
    2. 7.2 Applied software engineering
      1. 7.2.1 Features of applied software
      2. 7.2.2 Modular structure
    3. 7.3 Software architecture
      1. 7.3.1 Basic components
      2. 7.3.2 Data preparation
      3. 7.3.3 Computational modules
      4. 7.3.4 Data processing and visualization
    4. 7.4 General purpose applied software
      1. 7.4.1 User-friendly interface
      2. 7.4.2 Basic features
      3. 7.4.3 The Salome platform
    5. 7.5 Problem-oriented software
      1. 7.5.1 Parametric study
      2. 7.5.2 Componet-based implementation of functionalities
      3. 7.5.3 Computational components
  14. 8 Geometry generation and meshing
    1. 8.1 General information
      1. 8.1.1 Structured meshes
      2. 8.1.2 Unstructured meshes
    2. 8.2 The Gmsh workflow
      1. 8.2.1 Elementary entities
      2. 8.2.2 Commands for working with geometric objects
      3. 8.2.3 Physical entities
      4. 8.2.4 Building geometry
      5. 8.2.5 Tools
      6. 8.2.6 Creating a complex geometry
      7. 8.2.7 Generating a mesh
    3. 8.3 NETGEN first look
      1. 8.3.1 Creating a geometry
      2. 8.3.2 Generating a mesh
  15. 9 PETSc for parallel solving of linear and nonlinear equations
    1. 9.1 Preliminaries
      1. 9.1.1 Brief description
      2. 9.1.2 Installation
      3. 9.1.3 Development of programs
      4. 9.1.4 Matrices and vectors
    2. 9.2 Solvers for systems of linear equations
      1. 9.2.1 Problem formulation
      2. 9.2.2 Finite difference approximation
      3. 9.2.3 Numerical implementation
    3. 9.3 Solution of nonlinear equations and systems
      1. 9.3.1 Statement of the problem
      2. 9.3.2 Solution algorithm
      3. 9.3.3 Implementation in PETSc
    4. 9.4 Solving unsteady problems
      1. 9.4.1 Problem formulation
      2. 9.4.2 Approximation
      3. 9.4.3 The program
  16. 10 The FEniCS project
    1. 10.1 Preliminaries
      1. 10.1.1 Main features
      2. 10.1.2 Installation
    2. 10.2 Model problem
      1. 10.2.1 Problem formulation
      2. 10.2.2 Variational formulation
    3. 10.3 Finite element discretization
      1. 10.3.1 Discretization
      2. 10.3.2 Finite elements
    4. 10.4 Program
      1. 10.4.1 UFL application
      2. 10.4.2 C++ implementation
      3. 10.4.3 Linear solvers
      4. 10.4.4 Compilation
    5. 10.5 Result processing
      1. 10.5.1 Visualization
      2. 10.5.2 Functionals
    6. 10.6 Nonlinear problems
      1. 10.6.1 Problem formulation
      2. 10.6.2 UFL application
      3. 10.6.3 C++ implementation
    7. 10.7 Time-dependent problems
      1. 10.7.1 Problem description
      2. 10.7.2 UFL application
      3. 10.7.3 C++ implementation
  17. 11 Numerical study of applied problems
    1. 11.1 Heat transfer with phase transitions
      1. 11.1.1 Mathematical model
      2. 11.1.2 Finite element discretization
      3. 11.1.3 Numerical implementation
      4. 11.1.4 Predictions
    2. 11.2 Lid-driven cavity flow
      1. 11.2.1 Incompressible Navier-Stokes equations
      2. 11.2.2 Variational formulation
      3. 11.2.3 Numerical algorithm
      4. 11.2.4 Computational experiments
    3. 11.3 Steady thermoelasticity problem
      1. 11.3.1 Governing equations
      2. 11.3.2 Finite element technique
      3. 11.3.3 Algorithm of calculations
      4. 11.3.4 Numerical results
    4. 11.4 Joule heating problem
      1. 11.4.1 Problem formulation
      2. 11.4.2 Discrete problem
      3. 11.4.3 Computational algorithm
      4. 11.4.4 Numerical simulations
  18. Bibliography
  19. Index