A global tridiagonal matrix
A ,
represented as three vectors
(DL, D, DU), should be
distributed over a one-dimensional
process grid assuming a block-column
data distribution. We assume that
the coefficient tridiagonal matrix
A
is of size (
)
and is represented by the following.
If we first assume that the matrix A is
nonsymmetric (diagonally dominant like),
and it is known a priori that no
pivoting is required for numerical stability,
the user may choose to perform no pivoting
during the factorization
(PxDTTRF ).
If we distribute this matrix
(assuming no pivoting) onto
a process grid
with a block size of
,
the processes would contain the
local arrays found in figure 4.13.
Figure 4.13: Mapping of local arrays for nonsymmetric tridiagonal
matrix A
Finally, a global symmetric positive definite tridiagonal matrix A , represented as two vectors (D and E), should be distributed over a one-dimensional process grid assuming a block-column data distribution.
Let us now assume that this matrix A
is symmetric positive definite and that
we distribute this matrix assuming lower
triangular storage (UPLO='L') onto a
process grid with a block
size
. The processes would
contain the local arrays found in
figure 4.14. We would
then call the routine
PxPTTRF
to perform the factorization, for example.
Figure 4.14: Mapping of local arrays for symmetric positive definite
tridiagonal matrix A (UPLO='L')
If we then distributed this same
matrix assuming upper triangular
storage (UPLO='U') onto a
process grid with a block size
,
the processes would contain the local
arrays found in figure 4.15.
Figure 4.15: Mapping of local arrays for symmetric positive definite
tridiagonal matrix A (UPLO='U')
Note that in the tridiagonal cases,
it is not necessary to maintain the
empty storage positions as designated
by in the narrow band routines.
The matrix of right-hand-side vectors B (for example, used in PxDTTRS and PxPTTRS ) is assumed to be a dense matrix distributed block-row across the process grid. Thus, consecutive blocks of rows of the matrix B are assigned to successive processes in the process grid, as described in section 4.4.1.