Parallel Scientific Computing in C++ and MPI

Chapter 10 Overview



Book Chapter Introduction

In this chapter we introduce methods for solutions of the standard eigenvalue problem A x = lambda x as well as for generalized eigenproblems; A is a square n x n matrix.  The main theory is based on the solvers of the previous chapter for linear systems.  Unlike, however, the methods of the previous chapter where both direct and iterative approaches are effective, in eigenvalue problems only iterative solvers are efficient.  We start with the simple power method and its variants, and we proceed with more sophisticated methods including a method for non-symmetric eigenproblems using the Arnoldi iteration.  We classify the different eigensolvers as local or global if they are typically used to compute one or two eigenvalues or the entire spectrum, respectively.

We introduce one new MPI function, MPI_Alltoall, and demonstrate its use through some of the algorithms presented in this chapter. In addition, we reiterate the use of MPI_Allgather and MPI_Allreduce through example implementations of algorithms presented in this chapter.


SCchapter10 Introduction and Chapter 10 Driver Programs

    Within the text, there are several places where the software suite is referenced.  In some cases the code is explicitly placed within the text, and at other times within the text we merely alert you that the software is available on this CD.  As you read through Chapter 10, you will find that the following function/classes were discussed.


    The declarations and definitions of these functions/classes can be found in the following files:

Go to the file SCchapter10.h for function/class declarations
Go to the file SCchapter10.cpp for function/class definitions
    In the case that an entire program (meaning that a main() function is provided) is presented in the text, we classify this as a driver program.  Unlike the functions/classes above, driver programs are complete C++ programs which can be compiled and executed.  As you read through the book, you will see that driver programs are often times created by using functions/classes which are in the SCchapter files.  We denote driver programs which are explicitly given in the text of the book in red.  In some chapters, we present very few driver programs explicitly in the text, however we provide some example driver programs which demonstrate how to use the functions/classes with in SCchapter files.  Such driver programs are denoted in black.


 
Section 10.1.2: Program demonstrating the use of the Inverse Power method chapter10c0.cpp
Section 10.2: MPI - Program demonstrating the first stage in parallel Householder Deflation chapter10c1P.cpp
Section 10.3.5: Program demonstrating the TDQREigensolver routine used in the tridiagonal QR eigensolver chapter10c2.cpp
Section 10.3.5: MPI - Program demonstrating the implementation of a parallel tridiagonal QR eigensolver chapter10c3P.cpp