Developer Reference

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

p?stedc

Computes all eigenvalues and eigenvectors of a symmetric tridiagonal matrix in parallel.

Syntax

void psstedc
(
const
char*
compz
,
const
MKL_INT*
n
,
float*
d
,
float*
e
,
float*
q
,
const
MKL_INT*
iq
,
const
MKL_INT*
jq
,
const
MKL_INT*
descq
,
float*
work
,
MKL_INT*
lwork
,
MKL_INT*
iwork
,
const
MKL_INT*
liwork
,
MKL_INT*
info
);
void pdstedc
(
const
char*
compz
,
const
MKL_INT*
n
,
double*
d
,
double*
e
,
double*
q
,
const
MKL_INT*
iq
,
const
MKL_INT*
jq
,
const
MKL_INT*
descq
,
double*
work
,
MKL_INT*
lwork
,
MKL_INT*
iwork
,
const
MKL_INT*
liwork
,
MKL_INT*
info
);
Include Files
  • mkl_scalapack.h
Description
p?stedc
computes all eigenvalues and eigenvectors of a symmetric tridiagonal matrix in parallel, using the divide and conquer algorithm.
Input Parameters
compz
= 'N': Compute eigenvalues only. (NOT IMPLEMENTED YET)
= 'I': Compute eigenvectors of tridiagonal matrix also.
= 'V': Compute eigenvectors of original dense symmetric matrix also. On entry,
Z
contains the orthogonal matrix used to reduce the original matrix to tridiagonal form. (NOT IMPLEMENTED YET)
n
(global)
The order of the tridiagonal matrix
T
.
n
>= 0.
d
(global)
Array, size (
n
)
On entry, the diagonal elements of the tridiagonal matrix.
e
(global)
Array, size (
n
-1).
On entry, the subdiagonal elements of the tridiagonal matrix.
iq
(global)
Q
's global row index, which points to the beginning of the submatrix which is to be operated on.
jq
(global)
Q
's global column index, which points to the beginning of the submatrix which is to be operated on.
descq
(global and local)
Array of size
dlen_
.
The array descriptor for the distributed matrix
Q
.
work
(local)
Array, size (
lwork
)
lwork
(local)
The size of the array
work
.
lwork
= 6*
n
+ 2*NP*NQ
NP =
numroc
(
n
, NB, MYROW, DESCQ(
rsrc_
), NPROW )
NQ =
numroc
(
n
, NB, MYCOL, DESCQ(
csrc_
), NPCOL )
numroc
is a ScaLAPACK tool function.
If
lwork
= -1, the
lwork
is global input and a workspace query is assumed; the routine only calculates the minimum size for the
work
array. The required workspace is returned as the first element of
work
and no error message is issued by
pxerbla
.
iwork
(local)
Array, size (
liwork
)
liwork
The size of the array
iwork
.
liwork
= 2 + 7*
n
+ 8*NPCOL
Output Parameters
d
On exit, if
info
= 0, the eigenvalues in descending order.
q
(local)
Array, local size (
lld_q
, LOCc(
jq
+
n
-1))
q
contains the orthonormal eigenvectors of the symmetric tridiagonal matrix.
On output,
q
is distributed across the P processes in block cyclic format.
work
On output,
work
[0]
returns the workspace needed.
iwork
On exit, if
liwork
> 0,
iwork
[0]
returns the optimal
liwork
.
info
(global)
= 0: successful exit.
< 0: If the
i
-th argument is an array and the
j
-th 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: The algorithm failed to compute the
info
/(
n
+1)-th eigenvalue while working on the submatrix lying in global rows and columns mod(
info
,
n
+1).

Product and Performance Information

1

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