jacobi_openmp


jacobi_openmp, a C++ code which illustrates the use of the OpenMP application program interface to parallelize a Jacobi iteration solving A*x=b.

Each step of the Jacobi iteration produces a vector xnew. The i-th entry of xnew is found by ``solving'' the i-th linear equation for the i-th variable. This operation can be done in parallel. It is a little more complicated to compute the maximum difference between the old and new x values, and to compute the maximum residual, but these can be done.

The example uses a standard -1,2,-1 matrix which has very slow convergence. Here, the point is not so much to get the answer, but to show that the process can be speeded up by employing OpenMP.

Licensing:

The information on this web page is distributed under the MIT license.

Languages:

jacobi_openmp is available in a C version and a C++ version and a Fortran90 version.

Related Data and Programs:

jacobi_openmp_test

jacobi, a C++ code which implements the Jacobi iteration for solving symmetric positive definite (SPD) systems of linear equations.

openmp_test, a C++ code which uses the OpenMP application program interface for parallel computations in a shared memory environment.

Reference:

  1. Peter Arbenz, Wesley Petersen,
    Introduction to Parallel Computing - A practical guide with examples in C,
    Oxford University Press,
    ISBN: 0-19-851576-6,
    LC: QA76.58.P47.
  2. Rohit Chandra, Leonardo Dagum, Dave Kohr, Dror Maydan, Jeff McDonald, Ramesh Menon,
    Parallel Programming in OpenMP,
    Morgan Kaufmann, 2001,
    ISBN: 1-55860-671-8,
    LC: QA76.642.P32.
  3. Barbara Chapman, Gabriele Jost, Ruud vanderPas, David Kuck,
    Using OpenMP: Portable Shared Memory Parallel Processing,
    MIT Press, 2007,
    ISBN13: 978-0262533027,
    LC: QA76.642.C49.
  4. OpenMP Architecture Review Board,
    OpenMP Application Program Interface,
    Version 3.0,
    May 2008.

Source code:


Last revised on 20 March 2020.