Visible to Intel only — GUID: GUID-DA6CFD8B-A034-4245-A3EA-F205748C9026
Visible to Intel only — GUID: GUID-DA6CFD8B-A034-4245-A3EA-F205748C9026
p?dtsv
Solves a general tridiagonal system of linear equations.
Syntax
call psdtsv(n, nrhs, dl, d, du, ja, desca, b, ib, descb, work, lwork, info)
call pddtsv(n, nrhs, dl, d, du, ja, desca, b, ib, descb, work, lwork, info)
call pcdtsv(n, nrhs, dl, d, du, ja, desca, b, ib, descb, work, lwork, info)
call pzdtsv(n, nrhs, dl, d, du, ja, desca, b, ib, descb, work, lwork, info)
Include Files
Description
The routine solves a system of linear equations
A(1:n, ja:ja+n-1) * X = B(ib:ib+n-1, 1:nrhs),
where A(1:n, ja:ja+n-1) is an n-by-n complex tridiagonal diagonally dominant-like distributed matrix.
Gaussian elimination without pivoting is used to factor a reordering of the matrix into L U.
Product and Performance Information |
---|
Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex. Notice revision #20201201 |
Input Parameters
- n
-
(global) INTEGER. The order of the distributed submatrix A(n≥ 0).
- nrhs
-
INTEGER. The number of right hand sides; the number of columns of the distributed matrix B(nrhs≥ 0).
- dl
-
(local).REAL for psdtsv
DOUBLE PRECISION for pddtsv
COMPLEX for pcdtsv
DOUBLE COMPLEX for pzdtsv.
Pointer to local part of global vector storing the lower diagonal of the matrix. Globally, dl(1) is not referenced, and dl must be aligned with d. Must be of size > desca( nb_ ).
- d
-
(local). REAL for psdtsv
DOUBLE PRECISION for pddtsv
COMPLEX for pcdtsv
DOUBLE COMPLEX for pzdtsv.
Pointer to local part of global vector storing the main diagonal of the matrix.
- du
-
(local). REAL for psdtsv
DOUBLE PRECISION for pddtsv
COMPLEX for pcdtsv
DOUBLE COMPLEX for pzdtsv.
Pointer to local part of global vector storing the upper diagonal of the matrix. Globally, du(n) is not referenced, and du must be aligned with d.
- ja
-
(global) INTEGER. 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) INTEGER array of size dlen.
If 1d type (dtype_a=501 or 502), dlen ≥ 7;
If 2d type (dtype_a=1), dlen ≥ 9.
The array descriptor for the distributed matrix A.
Contains information of mapping of A to memory.
- b
-
(local)
REAL for psdtsv
DOUBLE PRECISON for pddtsv
COMPLEX for pcdtsv
DOUBLE COMPLEX for pzdtsv.
Pointer into the local memory to an array of local lead size lld_b > nb. On entry, this array contains the local pieces of the right hand sides B(ib:ib+n-1, 1:nrhs).
- ib
-
(global) INTEGER. 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) INTEGER array of size dlen.
If 1d type (dtype_b =502), dlen ≥ 7;
If 2d type (dtype_b =1), dlen ≥ 9.
The array descriptor for the distributed matrix B.
Contains information of mapping of B to memory.
- work
-
(local).
REAL for psdtsv
DOUBLE PRECISON for pddtsv
COMPLEX for pcdtsv
DOUBLE COMPLEX for pzdtsv. Temporary workspace. This space may be overwritten in between calls to routines. work must be the size given in lwork.
- lwork
-
(local or global) INTEGER. Size of user-input workspace work. If lwork is too small, the minimal acceptable size will be returned in work(1) and an error code is returned. lwork > (12*NPCOL+3*nb)+max((10+2*min(100, nrhs))*NPCOL+4*nrhs, 8*NPCOL)
Output Parameters
- dl
-
On exit, this array contains information containing the * factors of the matrix.
- d
-
On exit, this array contains information containing the * factors of the matrix. Must be of size > desca( nb_ ).
- du
-
On exit, this array contains information containing the * factors of the matrix. Must be of size > desca( nb_ ).
- b
-
On exit, this contains the local piece of the solutions distributed matrix X.
- work
-
On exit, work(1) contains the minimal lwork.
- info
-
(local) INTEGER. If info=0, the execution is successful.
< 0: If the i-th argument is an array and the j-entry 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.
> 0: If info = k<NPROCS, the submatrix stored on processor info and factored locally was not positive definite, and the factorization was not completed.
If info = k > NPROCS, the submatrix stored on processor info-NPROCS representing interactions with other processors was not positive definite, and the factorization was not completed.