Solve Linear Systems After LU Factorization#

GETRS (GEneral TRiangular Solve) function solves a system of linear equations

\[op(A) * X = B\]

where

  • A is the input batched LU-factorized N x N matrix. The lower triangular part of A is L, and upper triangular part (including diagonal elements) of A is U.

  • B is the input batched N x NRHS right hand side matrix.

  • X is the output batched N x NRHS right hand side matrix.

  • Operation op(A) indicates if matrix A is non-transpose, or transpose for real data type, or conjugate transpose for complex data type.

cuSolverDx provides separate function operators depending on whether pivoting is to be performed:

  • cusolverdx::function::getrs_no_pivot: Linear system solve using LU factors with no pivoting.

  • cusolverdx::function::getrs_partial_pivot: Linear system solve using LU factors with partial pivoting. Not available in cuSolver 0.1.0.

Warning

cuSolverDx 0.1.0 does not support getrs_partial_pivot, and only supports getrs_no_pivot for real data type and non-transposed matrix A. Full LU functionalities will be available in future releases.

cuSolverDx getrs_no_pivot device functions (see Execution Methods):

__device__ void execute(data_type* A, data_type* B);
// with runtime lda and ldb
__device__ void execute(data_type* A, const unsigned int lda,
                        data_type* B, const unsigned int ldb);

A is a batched N x N LU-factorized general matrix. The lower triangular part of A is L, and upper triangular part (including diagonal elements) of A is U. The leading dimension of A is lda >= N regardless matrix A is in column- or row-major layout.

B is a batched N x NRHS right hand side matrix. The operation is in-place, i.e. matrix X overwrites matrix B with the same leading dimension ldb. The leading dimension of B is ldb >= NRHS if B is column-major, or ldb >= N if B is row-major.

The function supports A and B either being the same or different column- or row-major layouts, see Arrangement operator.