Developer Reference

  • 2021.1
  • 12/04/2020
  • Public Content
Contents

p?dttrs

Solves a system of linear equations with a diagonally dominant-like tridiagonal distributed matrix using the factorization computed by
p?dttrf
.

Syntax

void
psdttrs
(
char
*trans
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
float
*dl
,
float
*d
,
float
*du
,
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
pddttrs
(
char
*trans
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
double
*dl
,
double
*d
,
double
*du
,
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
pcdttrs
(
char
*trans
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex8
*dl
,
MKL_Complex8
*d
,
MKL_Complex8
*du
,
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
pzdttrs
(
char
*trans
,
MKL_INT
*n
,
MKL_INT
*nrhs
,
MKL_Complex16
*dl
,
MKL_Complex16
*d
,
MKL_Complex16
*du
,
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?dttrs
function
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 tridiagonal 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?dttrf
.
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)
.
nrhs
(global) The number of right hand sides; the number of columns of the distributed matrix sub(
B
)
(
nrhs
0)
.
dl
,
d
,
du
(local)
Pointers to the local arrays of size
nb_a
each.
On entry, these arrays contain details of the factorization. Globally,
dl
[0]
and
du
[
n
-1]
are not referenced;
dl
and
du
must be aligned with
d
.
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
or
dtype_a
= 502
, then
dlen_
7
;
else if
dtype_a
= 1
, then
dlen_
9
.
b
(local) Same type as
d
.
Pointer into the local memory to an array of local size
lld_b
*
LOCc
(
nrhs
)
On entry, the array
b
contains the local pieces of the
n
-by-
nrhs
right hand side distributed matrix sub(
B
).
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?dttrf
and is stored in
af
. If a linear system is to be solved using
p?dttrs
after the factorization
function
,
af
must not be altered.
The array
work
is a workspace array.
laf
(local) The size of the array
af
.
Must be
laf
NB
*(
bwl
+
bwu
)+6*(
bwl
+
bwu
)*(
bwl
+2
*bwu
)
.
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
10*
NPCOL
+4*
nrhs
.
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
.

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.