Let us consider the simple example of implementation
of the
Cholesky factorization.
Given a symmetric positive definite matrix A , the Cholesky
factorization of A is given by
where L is lower triangular.
The algorithm for implementing this operation can be described by partitioning the matrices
where and
are scalars, and
and
are vectors of length n-1 .
The
indicates the symmetric part of A .
Now,
This in turn yields the equations
We now give the algorithm as it might appear on a chalk board in a classroom, and the PLAPACK implementation:
All information that describes A , its data, and how it
is distributed to processors (nodes) is encoded in a
object (data-structure) referenced by a.
The PLA_Obj_view_all creates a second reference,
acur, into the same data.
The PLA_Obj_global_length call extracts the current
size of the matrix that acur currently references.
If this is zero, the recursion has completed.
The call to PLA_Obj_split_4 partitions the
matrix, creating new references for the four quadrants.
Element is updated by taking its square root
in subroutine Take_sqrt,
is scaled by
by calling PLA_Inv_scal, and
finally the symmetric rank-1 update is achieved
through the call to PLA_Syr. This sets up
the next iteration, which is also the next level of
recursion in our original algorithm.