ppbsv
The ppbsv solver supports the following input types.
- data type: DSZC
- index type:
std::int32_t,std::int64_t
The ppbsv solves a square real banded symmetric positive definite distributed matrix with bandwidth \(KLU\) using Cholesky factorization.
The matrix of size \(N\) is stored in a memory block of size \(N \times (KLU+1)\).
Constructor
There are three template arguments.
- data type, e.g.,
double,float,std::complex<double>,std::complex<float>. - index type, e.g.,
std::int32_t,std::int64_t. UPLOflag indicating which triangular half is stored,U(upper) orL(lower).
This solver uses a 1D process grid. It takes a single argument that represents the number of rows in the grid.
Since the matrix is symmetric, ScaLAPACK expects only half of the matrix.
Thus the caller must provide the matrix exactly stored in a contiguous memory block of size \(N \times (KLU+1)\).
For different UPLO flags, the internal storage layout varies.
Indexer
A nested indexer converts logical 2D indices \((i, j)\) into the correct 1D offset for the symmetric band storage layout, respecting the UPLO flag.