Solve Linear Systems After LU Factorization#
GETRS (GEneral TRiangular Solve) function solves a system of linear equations
where
Ais the input batched LU-factorizedN x Nmatrix. The lower triangular part ofAisL, and upper triangular part (including diagonal elements) ofAisU.Bis the input batchedN x NRHSright hand side matrix.Xis the output batchedN x NRHSright hand side matrix.Operation
op(A)indicates if matrixAis 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.