?larre2
?larre2
Given a tridiagonal matrix, sets small off-diagonal elements to zero and for each unreduced block, finds base representations and eigenvalues.
Syntax
void slarre2
(
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
,
float*
w
,
float*
werr
,
float*
wgap
,
MKL_INT*
iblock
,
MKL_INT*
indexw
,
float*
gers
,
float*
pivmin
,
float*
work
,
MKL_INT*
iwork
,
MKL_INT*
info
);
void dlarre2
(
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
,
double*
w
,
double*
werr
,
double*
wgap
,
MKL_INT*
iblock
,
MKL_INT*
indexw
,
double*
gers
,
double*
pivmin
,
double*
work
,
MKL_INT*
iwork
,
MKL_INT*
info
);
Include Files
- mkl_scalapack.h
Description
To find the desired eigenvalues of a given real symmetric tridiagonal matrix , it finds
T
, ?larre2
sets, via ?larra
, "small" off-diagonal elements to zero. For each block T
i
- a suitable shift at one end of the block's spectrum,
- the root RRR, T-iσiI=LiDiLiT, and
- eigenvalues of eachLiDiLiT.
The representations and eigenvalues found are then returned to
?stegr2
to compute the eigenvectors T
. ?larre2
is more suitable for parallel computation than the original LAPACK code for computing the root RRR and its eigenvalues. When computing eigenvalues in parallel and the input tridiagonal matrix splits into blocks, ?larre2
can skip over blocks which contain none of the eigenvalues from dol
to dou
for which the processor is responsible. In extreme cases (such as large matrices consisting of many blocks of small size, e.g. 2x2), the gain can be substantial. 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.
- 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 sizenThendiagonal 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
- Specifying an index rangedol:douallows the user to work on only a selected part of the representation tree. 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
OUTPUT Parameters
- vl,vu
- Ifrange='I' or ='A',?larre2contains bounds on the desired part of the spectrum.
- d
- Thendiagonal elements of the diagonal matricesD.i
- e
- econtains the subdiagonal elements of the unit bidiagonal matricesL. The entriesi.e[isplit[i]], 0≤i<nsplit, contain the base pointsσon outputi+1
- e2
- The entries, are 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.
- w
- Array of sizenThe firstmelements contain the eigenvalues. The eigenvalues of each of the blocks,LiDiLiT, are sorted in ascending order (?larre2may use the remainingn-melements as workspace).Note that immediately after exiting thisfunction, only the eigenvalues inwwith indices in rangemight rely on this processor when 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 rangemight rely on this processor when 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 rangemight rely on this processor when 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?larre2.< 0: One of the calledfunctions signaled an internal problem.Needs inspection of the corresponding parameterinfofor further information.=-1: Problem in?larrd.=-2: Not enough internal iterations to find the base representation.=-3: Problem in?larrbwhen computing the refined root representation for?lasq2.=-4: Problem in?larrbwhen preforming bisection on the desired part of the spectrum.=-5: Problem in?lasq2=-6: Problem in?lasq2