?larrv2
?larrv2
Computes the eigenvectors of the tridiagonal matrix
T
= L
*D
*L
T
given L
, D
and the eigenvalues of L
*D
*L
T
.Syntax
void slarrv2
(
MKL_INT*
n
,
float*
vl
,
float*
vu
,
float*
d
,
float*
l
,
float*
pivmin
,
MKL_INT*
isplit
,
MKL_INT*
m
,
MKL_INT*
dol
,
MKL_INT*
dou
,
MKL_INT*
needil
,
MKL_INT*
neediu
,
float*
minrgp
,
float*
rtol1
,
float*
rtol2
,
float*
w
,
float*
werr
,
float*
wgap
,
MKL_INT*
iblock
,
MKL_INT*
indexw
,
float*
gers
,
float*
sdiam
,
float*
z
,
MKL_INT*
ldz
,
MKL_INT*
isuppz
,
float*
work
,
MKL_INT*
iwork
,
MKL_INT*
vstart
,
MKL_INT*
finish
,
MKL_INT*
maxcls
,
MKL_INT*
ndepth
,
MKL_INT*
parity
,
MKL_INT*
zoffset
,
MKL_INT*
info
);
void dlarrv2
(
MKL_INT*
n
,
double*
vl
,
double*
vu
,
double*
d
,
double*
l
,
double*
pivmin
,
MKL_INT*
isplit
,
MKL_INT*
m
,
MKL_INT*
dol
,
MKL_INT*
dou
,
MKL_INT*
needil
,
MKL_INT*
neediu
,
double*
minrgp
,
double*
rtol1
,
double*
rtol2
,
double*
w
,
double*
werr
,
double*
wgap
,
MKL_INT*
iblock
,
MKL_INT*
indexw
,
double*
gers
,
double*
sdiam
,
double*
z
,
MKL_INT*
ldz
,
MKL_INT*
isuppz
,
double*
work
,
MKL_INT*
iwork
,
MKL_INT*
vstart
,
MKL_INT*
finish
,
MKL_INT*
maxcls
,
MKL_INT*
ndepth
,
MKL_INT*
parity
,
MKL_INT*
zoffset
,
MKL_INT*
info
);
Include Files
- mkl_scalapack.h
Description
?larrv2
computes the eigenvectors of the tridiagonal matrix T
= L
D
L
T
L
, D
and approximations to the eigenvalues of L
D
L
T
?larrv2
. The major difference between the parallel and the sequential construction of the representation tree is that in the parallel case, not all eigenvalues of a given cluster might be computed locally. Other processors might "own" and refine part of an eigenvalue cluster. This is crucial for scalability. Thus there might be communication necessary before the current level of the representation tree can be parsed.
Please note:
- The calling sequence has two additional integer parameters,dolanddou, that should satisfym≥dou≥dol≥1. These parameters are only relevant when both eigenvalues and eigenvectors are computed (stegr2bparameterjobz= 'V').?larrv2only computes the eigenvectors corresponding to eigenvaluesdolthroughdouinw. (That is, instead of computing the eigenvectors belonging to, only the eigenvectors belonging to eigenvaluesw[0] throughw[m-1]are computed. In this case, only the eigenvaluesw[dol- 1] throughw[dou-1]dol:douare guaranteed to be accurately refined to all figures by Rayleigh-Quotient iteration.
- The additional argumentsvstart,finish,ndepth,parity,zoffsetare included as a thread-safe implementation equivalent to save variables. These variables store details about the local representation tree which is computed layerwise. For scalability reasons, eigenvalues belonging to the locally relevant representation tree might be computed on other processors. These need to be communicated before the inspection of the RRRs can proceed on any given layer. Note that only when the variablefinishisnon-zero, the computation has ended. All eigenpairs betweendolanddouhave been computed.mis set todou-dol+ 1.
- ?larrv2needs more workspace inzthan the sequentialslarrv. It is used to store the conformal embedding of the local representation tree.
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
- The order of the matrix.n≥0.
- vl,vu
- Lower and upper bounds of the interval that contains the desired eigenvalues.vl<vu. Needed to compute gaps on the left or right end of the extremal eigenvalues in the desired range.vuis currently not used but kept as parameter in case needed.
- d
- Array of sizenThendiagonal elements of the diagonal matrixd. On exit,dis overwritten.
- l
- Array of sizenThe (n-1) subdiagonal elements of the unit bidiagonal matrixLare in elements0 toofn-2l(if the matrix is not split.) At the end of each block is stored the corresponding shift as given by?larre. On exit,lis overwritten.
- pivmin
- The minimum pivot allowed in the sturm sequence.
- isplit
- Array of sizenThe splitting points, at whichthe matrixTbreaks up into blocks.The first block consists of rows/columns 1 toisplit[ 0 ], the second of rows/columnsisplit[ 0 ] + 1 throughisplit[ 1 ], etc.
- m
- The total number of input eigenvalues. 0≤m≤n.
- dol,dou
- If you want to compute only selected eigenvectors from all the eigenvalues supplied, you can specify an index rangedol:dou. Or else the settingdol=1,dou=mshould be applied. Note thatdolanddourefer to the order in which the eigenvalues are stored inw. If you want to compute only selected eigenpairs, the columnsdol-1 todou+1 of the eigenvector spaceZcontain the computed eigenvectors. All other columns ofZare set to zero.Ifdol> 1, thenZ(:,dol-1-zoffset) is used.Ifdou<m, thenZ(:,dou+1-zoffset) is used.
- needil,neediu
- Describe which are the left and right outermost eigenvalues that still need to be included in the computation. These indices indicate whether eigenvalues from other processors are needed to correctly compute the conformally embedded representation tree.Whendol≤needil≤neediu≤dou, all required eigenvalues are local to the processor and no communication is required to compute its part of the representation tree.
- minrgp
- The minimum relative gap threshold to decide whether an eigenvalue or a cluster boundary is reached.
- rtol1,rtol2
- Parameters for bisection. An interval [left,right] has converged ifright-left< max(rtol1*gap,rtol2*max(|left|,|right|) )
- w
- Array of sizenThe firstmelements ofwcontain the approximate eigenvalues for which eigenvectors are to be computed. The eigenvalues should be grouped by split-off block and ordered from smallest to largest within the block. (The output arraywfrom?stegr2ais expected here.) Furthermore, they are with respect to the shift of the corresponding root representation for their block.
- werr
- Array of sizenThe firstmelements contain the semiwidth of the uncertainty interval of the corresponding eigenvalue inw.
- wgap
- Array of sizenThe separation from the right neighbor eigenvalue inw.
- iblock
- Array of sizenThe indices of the blocks (submatrices) associated with the corresponding eigenvalues inw;.iblock[i]=1 if eigenvaluew[i] belongs to the first block from the top,iblock[i]=2 ifw[i] belongs to the second block, and so on
- indexw
- Array of sizenThe indices of the eigenvalues within each block (submatrix). For example:.indexw[i]= 10 andiblock[i]=2 imply that the (i+1)-th eigenvaluew[i] is the 10th eigenvalue in block 2
- gers
- Array of size 2*nThenGerschgorin intervals (thei-th Gerschgorin interval is(). The Gerschgorin intervals should be computed from the original unshifted matrix.gers[2*i-2],gers[2*i-1])Not used but kept as parameter for possible future use.
- sdiam
- Array of sizenThe spectral diameters for all unreduced blocks.
- ldz
- The leading dimension of the arrayz.ldz≥1, and ifstegr2bparameterjobz= 'V',ldz≥max(1,n).
- work
- (workspace) array of size 12*n
- iwork
- (workspace) Array of size 7*n
- vstart
- Non-zeroon initialization, set tozeroafterwards.
- finish
- A flag that indicates whether all eigenpairs have been computed.
- maxcls
- The largest cluster worked on by this processor in the representation tree.
- ndepth
- The current depth of the representation tree. Set to zero on initial pass, changed when the deeper levels of the representation tree are generated.
- parity
- An internal parameter needed for the storage of the clusters on the current level of the representation tree.
- zoffset
- Offset for storing the eigenpairs whenzis distributed in 1D-cyclic fashion.
OUTPUT Parameters
- needil,neediu
- w
- Unshifted eigenvalues for which eigenvectors have already been computed.
- werr
- Contains refined values of its input approximations.
- wgap
- Contains refined values of its input approximations. Very small gaps are changed.
- z
- Arrayof sizeldz* max(1,m)Ifinfo= 0, the firstmcolumns ofthe matrixcontain the orthonormal eigenvectors of the matrixZ, stored in the arrayz,Tcorresponding to the input eigenvalues, with thei-th column ofholding the eigenvector associated withZ.w[i- 1]In the distributed version, only a subset of columns is accessed, seedol,dou, andzoffset.
- isuppz
- Array of size 2*max(1,m)The support of the eigenvectors inz, i.e., the indices indicating the non-zero elements inz. Thei-th eigenvector is non-zero only in elements.isuppz[ 2*i-2 ] throughisuppz[ 2*i-1 ]
- vstart
- Non-zeroon initialization, set tozeroafterwards.
- finish
- A flag that indicates whether all eigenpairs have been computed.
- maxcls
- The largest cluster worked on by this processor in the representation tree.
- ndepth
- The current depth of the representation tree. Set to zero on initial pass, changed when the deeper levels of the representation tree are generated.
- parity
- An internal parameter needed for the storage of the clusters on the current level of the representation tree.
- info
- = 0: successful exit> 0: A problem occured in?larrv2.< 0: One of the calledfunctions signaled an internal problem.Needs inspection of the corresponding parameterinfofor further information.=-1: Problem in?larrb2when refining a child's eigenvalues.=-2: Problem in?larrf2when computing the RRR of a child. When a child is inside a tight cluster, it can be difficult to find an RRR. A partial remedy from the user's point of view is to make the parameterminrgpsmaller and recompile. However, as the orthogonality of the computed vectors is proportional to 1/minrgp, be aware that decreasingminrgpmight be reduce precision.=-3: Problem in?larrb2when refining a single eigenvalue after the Rayleigh correction was rejected.= 5: The Rayleigh Quotient Iteration failed to converge to full accuracy.