batchQRPivotingSolve (ParallelManager pm, double *A, int lda, int nda, double *B, int ldb, int ndb, int M, int N, int NRHS, const int num_matrices, const bool implicit_RHS=true)
A contains num_matrices * lda * nda data which is num_matrices different (lda x nda) matrices with valid entries of size (M x N), and B contains num_matrices * ldb * ndb data which is num_matrices different (ldb x ndb) right hand sides. B is assumed to have one of two forms:
, the valid entries are the first (N X NRHS)
, the valid entries are the first (NRHS) i.e. for this case, B is intended to store non-zero entries from a diagonal matrix (as a vector). For the matrix, the (m,m) entry of a diagonal matrix would here be stored in the position.
Parameters
pm
[in] - manager class for team and thread parallelism
A
[in/out] - matrix A (in), meaningless workspace output (out)
lda
[in] - row dimension of each matrix in A
nda
[in] - columns dimension of each matrix in A
B
[in/out] - right hand sides (in), solution (out)
ldb
[in] - row dimension of each matrix in B
ndb
[in] - column dimension of each matrix in B
M
[in] - number of rows containing data (maximum rows over everything in batch) in A
N
[in] - number of columns containing data in each matrix in A
NRHS
[in] - number of columns containing data in each matrix in B
num_matrices
[in] - number of problems
implicit_RHS
[in] - determines whether RHS will be stored implicitly. If true, instead of RHS storing the full sqrt(W) explicitly, only the diagonal entries of sqrt(W) will be stored as a 1D array beginning at entry with matrix coordinate (0,0).