Developer Reference

  • 0.9
  • 09/09/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

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804