Visible to Intel only — GUID: GUID-F603687D-8EC5-4ABB-AAE3-A66BB4D696CB
Visible to Intel only — GUID: GUID-F603687D-8EC5-4ABB-AAE3-A66BB4D696CB
p?dbtrs
Solves a system of linear equations with a diagonally dominant-like banded distributed matrix using the factorization computed by p?dbtrf.
Syntax
void psdbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , float *a , MKL_INT *ja , MKL_INT *desca , float *b , MKL_INT *ib , MKL_INT *descb , float *af , MKL_INT *laf , float *work , MKL_INT *lwork , MKL_INT *info );
void pddbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , double *a , MKL_INT *ja , MKL_INT *desca , double *b , MKL_INT *ib , MKL_INT *descb , double *af , MKL_INT *laf , double *work , MKL_INT *lwork , MKL_INT *info );
void pcdbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , MKL_Complex8 *a , MKL_INT *ja , MKL_INT *desca , MKL_Complex8 *b , MKL_INT *ib , MKL_INT *descb , MKL_Complex8 *af , MKL_INT *laf , MKL_Complex8 *work , MKL_INT *lwork , MKL_INT *info );
void pzdbtrs (char *trans , MKL_INT *n , MKL_INT *bwl , MKL_INT *bwu , MKL_INT *nrhs , MKL_Complex16 *a , MKL_INT *ja , MKL_INT *desca , MKL_Complex16 *b , MKL_INT *ib , MKL_INT *descb , MKL_Complex16 *af , MKL_INT *laf , MKL_Complex16 *work , MKL_INT *lwork , MKL_INT *info );
Include Files
- mkl_scalapack.h
Description
The p?dbtrsfunction solves for X one of the systems of equations:
sub(A)*X = sub(B),
(sub(A))T*X = sub(B), or
(sub(A))H*X = sub(B),
where sub(A) = A(1:n, ja:ja+n-1) is a diagonally dominant-like banded distributed matrix, and sub(B) denotes the distributed matrix B(ib:ib+n-1, 1:nrhs).
This function uses the LU factorization computed by p?dbtrf.
Input Parameters
- trans
-
(global) Must be 'N' or 'T' or 'C'.
Indicates the form of the equations:
If trans = 'N', then sub(A)*X = sub(B) is solved for X.
If trans = 'T', then (sub(A))T*X = sub(B) is solved for X.
If trans = 'C', then (sub(A))H*X = sub(B) is solved for X.
- n
-
(global) The order of the distributed matrix sub(A) (n≥ 0).
- bwl
-
(global) The number of subdiagonals within the band of A
( 0 ≤ bwl ≤ n-1 ).
- bwu
-
(global) The number of superdiagonals within the band of A
( 0 ≤ bwu ≤ n-1 ).
- nrhs
-
(global) The number of right hand sides; the number of columns of the distributed matrix sub(B) (nrhs≥ 0).
- a, b
-
(local)
Pointers into the local memory to arrays of local sizes lld_a*LOCc(ja+n-1) and lld_b*LOCc(nrhs), respectively.
On entry, the array a contains details of the LU factorization of the band matrix A, as computed by p?dbtrf.
On entry, the array b contains the local pieces of the right hand side distributed matrix sub(B).
- ja
-
(global) The index in the global matrix A indicating the start of the matrix to be operated on (which may be either all of A or a submatrix of A).
- desca
-
(global and local) array of size dlen_. The array descriptor for the distributed matrix A.
If dtype_a = 501, then dlen_≥ 7;
else if dtype_a = 1, then dlen_≥ 9.
- ib
-
(global) The row index in the global matrix B indicating the first row of the matrix to be operated on (which may be either all of B or a submatrix of B).
- descb
-
(global and local) array of size dlen_. The array descriptor for the distributed matrix B.
If dtype_b = 502, then dlen_≥ 7;
else if dtype_b = 1, then dlen_≥ 9.
- af, work
-
(local)
Arrays of size laf and lwork, respectively The array af contains auxiliary fill-in space. The fill-in space is created in a call to the factorization function p?dbtrf and is stored in af.
The array work is a workspace array.
- laf
-
(local) The size of the array af.
Must be laf≥NB*(bwl+bwu)+6*(max(bwl,bwu))2 .
If laf is not large enough, an error code will be returned and the minimum acceptable size will be returned in af[0].
- lwork
-
(local or global) The size of the array work, must be at least
lwork≥ (max(bwl,bwu))2.
Output Parameters
- b
-
On exit, this array contains the local pieces of the solution distributed matrix X.
- work[0]
-
On exit, work[0] contains the minimum value of lwork required for optimum performance.
- info
-
If info=0, the execution is successful. info < 0:
If the i-th argument is an array and the j-th entry, indexed j - 1, had an illegal value, then info = -(i*100+j); if the i-th argument is a scalar and had an illegal value, then info = -i.