?stegr2a
?stegr2a
Computes selected eigenvalues and initial representations needed for eigenvector computations.
Syntax
void sstegr2a
(
char*
jobz
,
char*
range
,
MKL_INT*
n
,
float*
d
,
float*
e
,
float*
vl
,
float*
vu
,
MKL_INT*
il
,
MKL_INT*
iu
,
MKL_INT*
m
,
float*
w
,
float*
z
,
MKL_INT*
ldz
,
MKL_INT*
nzc
,
float*
work
,
MKL_INT*
lwork
,
MKL_INT*
iwork
,
MKL_INT*
liwork
,
MKL_INT*
dol
,
MKL_INT*
dou
,
MKL_INT*
needil
,
MKL_INT*
neediu
,
MKL_INT*
inderr
,
MKL_INT*
nsplit
,
float*
pivmin
,
float*
scale
,
float*
wl
,
float*
wu
,
MKL_INT*
info
);
void dstegr2a
(
char*
jobz
,
char*
range
,
MKL_INT*
n
,
double*
d
,
double*
e
,
double*
vl
,
double*
vu
,
MKL_INT*
il
,
MKL_INT*
iu
,
MKL_INT*
m
,
double*
w
,
double*
z
,
MKL_INT*
ldz
,
MKL_INT*
nzc
,
double*
work
,
MKL_INT*
lwork
,
MKL_INT*
iwork
,
MKL_INT*
liwork
,
MKL_INT*
dol
,
MKL_INT*
dou
,
MKL_INT*
needil
,
MKL_INT*
neediu
,
MKL_INT*
inderr
,
MKL_INT*
nsplit
,
double*
pivmin
,
double*
scale
,
double*
wl
,
double*
wu
,
MKL_INT*
info
);
Include Files
- mkl_scalapack.h
Description
?stegr2a
computes selected eigenvalues and initial representations needed for eigenvector computations in ?stegr2b
. It is invoked in the ScaLAPACK MRRR driver p?syevr
and the corresponding Hermitian version when both eigenvalues and eigenvectors are computed in parallel on multiple processors. For this case, ?stegr2a
implements the first part of the MRRR algorithm, parallel eigenvalue computation and finding the root RRR. At the end of ?stegr2a
, other processors might have a part of the spectrum that is needed to continue the computation locally. Once this eigenvalue information has been received by the processor, the computation can then proceed by calling the second part of the parallel MRRR algorithm, ?stegr2b
. Please note:
- The calling sequence has two additional integer parameters, (compared to LAPACK'sstegr), these aredolanddouand should satisfym≥dou≥dol≥1. These parameters are only relevant for the casejobz= 'V'.Globally invoked over all processors,?stegr2acomputes all the eigenvalues specified byrange.?stegr2alocally only computes the eigenvalues corresponding to eigenvaluesdolthroughdouinw, indexed. (That is, instead of computing the eigenvectors belonging todol-1 throughdou-1, only the eigenvectors belonging to eigenvaluesw([0] throughw[m-1]are computed. In this case, only the eigenvaluesw[dol-1] throughw[dou-1]are guaranteed to be fully accurate.dolthroughdou
- mis not the number of eigenvalues specified byrange, but it ism=dou-dol+ 1. Instead,mrefers to the number of eigenvalues computed on this processor.
- While no eigenvectors are computed in?stegr2aitself (this is done later in?stegr2b), the interfaceIfjobz= 'V' then, depending onrangeanddol,dou,?stegr2amight need more workspace inzthen the original?stegr. In particular, the arrayswandzmight not contain all the wanted eigenpairs locally, instead this information is distributed over other processors.
Optimization Notice
|
---|
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
|
This notice covers the following instruction sets: SSE2, SSE4.2, AVX2, AVX-512.
Input Parameters
- jobz
- = 'N': Compute eigenvalues only;= 'V': Compute eigenvalues and eigenvectors.
- range
- = 'A': all eigenvalues will be found.= 'V': all eigenvalues in the half-open interval (vl,vu] will be found.= 'I':eigenvalues of the entire matrix with the indices in a given rangewill be found.
- n
- The order of the matrix.n≥0.
- d
- Array of sizenThendiagonal elements of the tridiagonal matrixT. Overwritten on exit.
- e
- Array of sizenOn entry, the (n-1) subdiagonal elements of the tridiagonal matrixTin elements0 toofn-2e.e[need not be set on input, but is used internally as workspace. Overwritten on exit.n-1]
- vl,vu
- Ifrange='V', the lower and upper bounds of the interval to be searched for eigenvalues.vl<vu.Not referenced ifrange= 'A' or 'I'.
- il,iu
- Ifrange='I', the indices (in ascending order) of thesmallest eigenvalue, to be returned in. 1w[il-1], and largest eigenvalue, to be returned inw[iu-1]≤il≤iu≤n, ifn> 0.Not referenced ifrange= 'A' or 'V'.
- ldz
- The leading dimension of the arrayz.ldz≥1, and ifjobz= 'V', thenldz≥max(1,n).
- nzc
- The number of eigenvectors to be held in the arrayz.Ifrange= 'A', thennzc≥max(1,n).Ifrange= 'V', thennzc≥the number of eigenvalues in (vl,vu].Ifrange= 'I', thennzc≥iu-il+1.Ifnzc= -1, then a workspace query is assumed; thefunctioncalculates the number of columns of thematrix stored inarrayzthat are needed to hold the eigenvectors. This value is returned as the first entry of thezarray, and no error message related tonzcis issued.
- lwork
- The size of the arraywork.lwork≥max(1,18*n) ifjobz= 'V', andlwork≥max(1,12*n) ifjobz= 'N'.Iflwork= -1, then a workspace query is assumed; thefunctiononly calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.
- liwork
- The size of the arrayiwork.liwork≥max(1,10*n) if the eigenvectors are desired, andliwork≥max(1,8*n) if only the eigenvalues are to be computed.Ifliwork= -1, then a workspace query is assumed; thefunctiononly calculates the optimal size of theiworkarray, returns this value as the first entry of theiworkarray, and no error message related toliworkis issued.
- dol,dou
- From all the eigenvalues, only eigenvaluesw[0] throughw[m-1]are computed.w[dol-1] throughw[dou-1]
OUTPUT Parameters
- m
- Globally summed over all processors,mequals the total number of eigenvalues found. 0≤m≤n.Ifrange= 'A',m=n, and ifrange= 'I',m=iu-il+1.The local output equalsm=dou-dol+ 1.
- w
- Array of sizenThe firstmelements contain approximations to the selected eigenvalues in ascending order. Note that immediately after exiting thisfunction, only the eigenvaluesindexedare reliable on this processor because the eigenvalue computation is done in parallel. The other entries are very crude preliminary approximations. Other processors hold reliable information on these other parts of thedol-1 throughdou-1warray.This information is communicated in the ScaLAPACK driver.
- z
- Array of size.ldz* max(1,m)?stegr2adoes not compute eigenvectors, this is done in?stegr2b. The argumentzas well as all related other arguments only appear to keep the interface consistent and to signal to the user that thisfunctionis meant to be used when eigenvectors are computed.
- work
- On exit, ifinfo= 0,work[0]returns the optimal (and minimal)lwork.
- iwork
- On exit, ifinfo= 0,iwork[0]returns the optimalliwork.
- needil,neediu
- The indices of the leftmost and rightmost eigenvalues needed to accurately compute the relevant part of the representation tree. This information can be used to find out which processors have the relevant eigenvalue information needed so that it can be communicated.
- inderr
- inderrpoints to the place in the work space where the eigenvalue uncertainties (errors) are stored.
- nsplit
- The number of blocks into whichTsplits. 1≤nsplit≤n.
- pivmin
- The minimum pivot in the sturm sequence forT.
- scale
- The scaling factor for the tridiagonalT.
- wl,wu
- The interval (wl,wu] contains all the wanted eigenvalues.It is either given by the user or computed in?larre2a.
- info
- On exit,info= 0: successful exitother: ifinfo= -i, thei-th argument had an illegal valueifinfo= 10x, internal error in?larre2a,Here, the digitx= abs(iinfo) < 10, whereiinfois the nonzero error code returned by?larre2a.