Computes selected eigenvalues and, optionally, eigenvectors of a complex generalized Hermitian positive-definite eigenproblem.
functioncomputes all the eigenvalues, and optionally, the eigenvectors of a complex generalized Hermitian positive-definite eigenproblem, of the form
x, or sub(
Here sub (
B) are assumed to be Hermitian and sub(
is also positive definite.
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.
- (global) Must be 1 or 2 or 3.Specifies the problem type to be solved:If, the problem type isibtype= 1sub(;A)*x=lambda*sub(B)*xIf, the problem type isibtype= 2sub(;A)*sub(B)*x=lambda*xIf, the problem type isibtype= 3sub(.B)*sub(A)*x=lambda*x
- (global) Must be'N'or'V'.If, then compute eigenvalues only.jobz='N'If, then compute eigenvalues and eigenvectors.jobz='V'
- (global) Must be'A'or'V'or'I'.If, therange='A'functioncomputes all eigenvalues.If, therange='V'functioncomputes eigenvalues in the interval:[vl,vu]If, therange='I'functioncomputes eigenvalues with indicesilthroughiu.
- (global) Must be'U'or'L'.If, arraysuplo='U'aandbstore the upper triangles of sub(A) and sub (B);If, arraysuplo='L'aandbstore the lower triangles of sub(A) and sub (B).
- (global)The order of the matrices sub(A) and sub (B)(.n≥0)
- (local)Pointer into the local memory to an array of size. On entry, this array contains the local pieces of thelld_a*LOCc(ja+n-1)n-by-nHermitian distributed matrix sub(A). If, the leadinguplo='U'n-by-nupper triangular part of sub(A) contains the upper triangular part of the matrix. If, the leadinguplo='L'n-by-nlower triangular part of sub(A) contains the lower triangular part of the matrix.
- (global)The row and column indices in the global matrixAindicating the first row and the first column of the submatrixA, respectively.
- (global and local) array of sizedlen_.The array descriptor for the distributed matrixA. Ifis incorrect, p?hegvx cannot guarantee correct error reporting.desca[ctxt_- 1]
- (local).Pointer into the local memory to an array of size. On entry, this array contains the local pieces of thelld_b*LOCc(jb+n-1)n-by-nHermitian distributed matrix sub(B).If, the leadinguplo='U'n-by-nupper triangular part of sub(B) contains the upper triangular part of the matrix.If, the leadinguplo='L'n-by-nlower triangular part of sub(B) contains the lower triangular part of the matrix.
- (global)The row and column indices in the global matrixBindicating the first row and the first column of the submatrixB, respectively.
- (global and local) array of sizedlen_.The array descriptor for the distributed matrixB.must be equal todescb[ctxt_- 1].desca[ctxt_- 1]
- (global)If, the lower and upper bounds of the interval to be searched for eigenvalues.range='V'Iforrange='A''I',vlandvuare not referenced.
- (global)If, the indices in ascending order of the smallest and largest eigenvalues to be returned. Constraint:range='I'il≥1, min(il,n) ≤iu≤nIforrange='A''V',ilandiuare not referenced.
- (global)If, settingjobz='V'abstoltoyields the most orthogonal eigenvectors.p?lamch(context,'U')The absolute error tolerance for the eigenvalues. An approximate eigenvalue is accepted as converged when it is determined to lie in an interval[of width less than or equal toa,b],abstol+eps*max(|a|,|b|)whereepsis the machine precision. Ifabstolis less than or equal to zero, theneps*norm(T) will be used in its place, where norm(T) is the 1-norm of the tridiagonal matrix obtained by reducingAto tridiagonal form.Eigenvalues will be computed most accurately whenabstolis set to twice the underflow threshold2*not zero. If thisp?lamch('S')functionreturns with((, indicating that some eigenvalues or eigenvectors did not converge, try settingmod(info,2)≠0).or. * (mod(info/8,2)≠0))abstolto2*.p?lamch('S')mod(is the integer remainder ofx,y).x/y
- (global).Specifies which eigenvectors should be reorthogonalized. Eigenvectors that correspond to eigenvalues which are withinof each other are to be reorthogonalized. However, if the workspace is insufficient (seetol=orfac*norm(A)lwork),tolmay be decreased until all eigenvectors to be reorthogonalized can be stored in one process. No reorthogonalization will be done iforfacequals zero. A default value of 1.0E-3 is used iforfacis negative.orfacshould be identical on all processes.
- (global) The row and column indices in the global matrixZindicating the first row and the first column of the submatrixZ, respectively.
- (global and local) array of sizedlen_. The array descriptor for the distributed matrixmust equalZ.descz[ctxt_- 1].desca[ctxt_- 1]
- (local)Workspace array of sizelwork
- (local).The size of the arraywork.If only eigenvalues are requested:lwork≥n+max(NB*(np0 + 1), 3)If eigenvectors are requested:lwork≥n+ (np0+mq0 +NB)*NBwith.nq0 =numroc(nn,NB, 0, 0,NPCOL)For optimal performance, greater workspace is needed, that islwork≥max(lwork,n,nhetrd_lwopt,nhegst_lwopt)wherelworkis as defined above, andnhetrd_lwork= 2*(anb+1)*(4*nps+2) + (nps+ 1)*nps;nhegst_lwopt= 2*np0*nb+nq0*nb+nb*nbnb=desca[mb_- 1]np0 =numroc(n,nb, 0, 0,NPROW)nq0 =numroc(n,nb, 0, 0,NPCOL)ictxt=desca[ctxt_- 1]anb=pjlaenv(ictxt, 3, 'p?hettrd','L', 0, 0, 0, 0)sqnpc=sqrt(dble(NPROW*NPCOL))nps=max(numroc(n, 1, 0, 0,sqnpc), 2*anb)numrocis a ScaLAPACK tool functions;pjlaenvis a ScaLAPACK environmental inquiry functionMYROW,MYCOL,NPROWandNPCOLcan be determined by calling thefunctionblacs_gridinfo.If, thenlwork= -1lworkis global input and a workspace query is assumed; thefunctiononly calculates the size required for optimal performance for all work arrays. Each of these values is returned in the first entry of the corresponding work arrays, and no error message is issued bypxerbla.
- (local)Workspace array of sizelrwork.