?larre2a
?larre2a
Given a tridiagonal matrix, sets small off-diagonal elements to zero and for each unreduced block, finds base representations and eigenvalues.
Syntax
void slarre2a
(
char*
range
,
MKL_INT*
n
,
float*
vl
,
float*
vu
,
MKL_INT*
il
,
MKL_INT*
iu
,
float*
d
,
float*
e
,
float*
e2
,
float*
rtol1
,
float*
rtol2
,
float*
spltol
,
MKL_INT*
nsplit
,
MKL_INT*
isplit
,
MKL_INT*
m
,
MKL_INT*
dol
,
MKL_INT*
dou
,
MKL_INT*
needil
,
MKL_INT*
neediu
,
float*
w
,
float*
werr
,
float*
wgap
,
MKL_INT*
iblock
,
MKL_INT*
indexw
,
float*
gers
,
float*
sdiam
,
float*
pivmin
,
float*
work
,
MKL_INT*
iwork
,
float*
minrgp
,
MKL_INT*
info
);
void dlarre2a
(
char*
range
,
MKL_INT*
n
,
double*
vl
,
double*
vu
,
MKL_INT*
il
,
MKL_INT*
iu
,
double*
d
,
double*
e
,
double*
e2
,
double*
rtol1
,
double*
rtol2
,
double*
spltol
,
MKL_INT*
nsplit
,
MKL_INT*
isplit
,
MKL_INT*
m
,
MKL_INT*
dol
,
MKL_INT*
dou
,
MKL_INT*
needil
,
MKL_INT*
neediu
,
double*
w
,
double*
werr
,
double*
wgap
,
MKL_INT*
iblock
,
MKL_INT*
indexw
,
double*
gers
,
double*
sdiam
,
double*
pivmin
,
double*
work
,
MKL_INT*
iwork
,
double*
minrgp
,
MKL_INT*
info
);
Include Files
- mkl_scalapack.h
Description
To find the desired eigenvalues of a given real symmetric tridiagonal matrix , it finds
T
, ?larre2a
sets any "small" off-diagonal elements to zero, and for each unreduced block T
i
- a suitable shift at one end of the block's spectrum,
- the base representation,T-iσiI=LiDiLiT, and
- eigenvalues of eachLiDiLiT.
The algorithm obtains a crude picture of all the wanted eigenvalues (as selected by
range
). However, to reduce work and improve scalability, only the eigenvalues dol
to dou
are refined. Furthermore, if the matrix splits into blocks, RRRs for blocks that do not contain eigenvalues from dol
to dou
are skipped. The DQDS algorithm (function
) is not used, unlike in the sequential case. Instead, eigenvalues are computed in parallel to some figures using bisection. ?lasq2
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
- range
- = 'A': ("All") all eigenvalues will be found.= 'V': ("Value") all eigenvalues in the half-open interval (vl,vu] will be found.= 'I': ("Index")eigenvalues of the entire matrix with the indices in a given rangewill be found.
- n
- The order of the matrix.n> 0.
- vl,vu
- Ifrange='V', the lower and upper bounds for the eigenvalues. Eigenvalues less than or equal tovl, or greater thanvu, will not be returned.vl<vu.Ifrange='I' or ='A',?larre2acomputes bounds on the desired part of the spectrum.
- il,iu
- Ifrange='I', the indices (in ascending order) of thesmallest eigenvalue, to be returned in.w[il-1], and largest eigenvalue, to be returned inw[iu-1]1≤il≤iu≤n.
- d
- Array of sizenOn entry, thendiagonal elements of the tridiagonal matrixT.
- e
- Array of sizenThe first (n-1) entries contain the subdiagonal elements of the tridiagonal matrixT;need not be set.e[n-1]
- e2
- Array of sizenThe first (n-1) entries contain the squares of the subdiagonal elements of the tridiagonal matrixT;need not be set.e2[n-1]
- rtol1,rtol2
- Parameters for bisection.An interval [left,right] has converged ifright-left< max(rtol1*gap,rtol2*max(|left|,|right|) )
- spltol
- The threshold for splitting.
- dol,dou
- If the user wants to work on only a selected part of the representation tree, he can specify an index rangedol:dou.Otherwise, the settingdol=1,dou=nshould be applied.Note thatdolanddourefer to the order in which the eigenvalues are stored inw.
- work
- Workspace array of size 6*n
- iwork
- Workspace array of size 5*n
- minrgp
- The minimum relative gap threshold to decide whether an eigenvalue or a cluster boundary is reached.
OUTPUT Parameters
- vl,vu
- Ifrange='V', the lower and upper bounds for the eigenvalues. Eigenvalues less than or equal tovl, or greater thanvu, are not returned.vl<vu.Ifrange='I' orrange='A',?larre2acomputes bounds on the desired part of the spectrum.
- d
- Thendiagonal elements of the diagonal matrices.Di
- e
- econtains the subdiagonal elements of the unit bidiagonal matrices. The entriesLi.e[isplit[i]], 0≤i<nsplit, contain the base pointsσon outputi+1
- e2
- The entrieshave been set to zero.e2[isplit[i]], 0≤i<nsplit
- nsplit
- The number of blocksTsplits into. 1≤nsplit≤n.
- isplit
- Array of sizenThe splitting points, at whichTbreaks up into blocks.The first block consists of rows/columns 1 toisplit[0], the second of rows/columnsisplit[0]+1 throughisplit[1], etc., and thensplit-th block consists of rows/columnsisplit[nsplit-2]+1 throughisplit[nsplit-1]=n.
- m
- The total number of eigenvalues (of allLiDiLiT) found.
- needil,neediu
- The indices of the leftmost and rightmost eigenvalues of the root node RRR which are needed to accurately compute the relevant part of the representation tree.
- w
- Array of sizenThe firstmelements contain the eigenvalues. The eigenvalues of each of the blocks,LiDiLiT, are sorted in ascending order (?larre2amay use the remainingn-melements as workspace).Note that immediately after exiting thisfunction, only the eigenvalues inwwith indices in rangerely on this processor because the eigenvalue computation is done in parallel.dol-1:dou-1
- werr
- Array of sizenThe error bound on the corresponding eigenvalue inw.Note that immediately after exiting thisfunction, only the uncertainties inwerrwith indices in rangeare reliable on this processor because the eigenvalue computation is done in parallel.dol-1:dou-1
- wgap
- Array of sizenThe separation from the right neighbor eigenvalue inw. The gap is only with respect to the eigenvalues of the same block as each block has its own representation tree.Exception: at the right end of a block we store the left gapNote that immediately after exiting thisfunction, only the gaps inwgapwith indices in rangeare reliable on this processor because the eigenvalue computation is done in parallel.dol-1:dou-1
- 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().gers[2*i-2],gers[2*i-1])
- pivmin
- The minimum pivot in the sturm sequence forT.
- info
- = 0: successful exit> 0: A problem occurred in?larre2a.< 0: One of the calledfunctions signaled an internal problem. Needs inspection of the corresponding parameterinfofor further information.=-1: Problem in?larrd2.=-2: Not enough internal iterations to find base representation.=-3: Problem in?larrb2when computing the refined root representation.=-4: Problem in?larrb2when preforming bisection on the desired part of the spectrum.= -9 Problem:m<dou-dol+1, that is the code found fewer eigenvalues than it was supposed to.