table of contents
iparmq(3) | Library Functions Manual | iparmq(3) |
NAME¶
iparmq - iparmq: set parameters for hseqr
SYNOPSIS¶
Functions¶
integer function IPARMQ (ispec, name, opts, n, ilo, ihi,
lwork)
IPARMQ
Detailed Description¶
Function Documentation¶
integer function IPARMQ (integer ispec, character, dimension( * ) name, character, dimension( * ) opts, integer n, integer ilo, integer ihi, integer lwork)¶
IPARMQ
Purpose:
!> !> This program sets problem and machine dependent parameters !> useful for xHSEQR and related subroutines for eigenvalue !> problems. It is called whenever !> IPARMQ is called with 12 <= ISPEC <= 16 !>
Parameters
ISPEC
!> ISPEC is INTEGER !> ISPEC specifies which tunable parameter IPARMQ should !> return. !> !> ISPEC=12: (INMIN) Matrices of order nmin or less !> are sent directly to xLAHQR, the implicit !> double shift QR algorithm. NMIN must be !> at least 11. !> !> ISPEC=13: (INWIN) Size of the deflation window. !> This is best set greater than or equal to !> the number of simultaneous shifts NS. !> Larger matrices benefit from larger deflation !> windows. !> !> ISPEC=14: (INIBL) Determines when to stop nibbling and !> invest in an (expensive) multi-shift QR sweep. !> If the aggressive early deflation subroutine !> finds LD converged eigenvalues from an order !> NW deflation window and LD > (NW*NIBBLE)/100, !> then the next QR sweep is skipped and early !> deflation is applied immediately to the !> remaining active diagonal block. Setting !> IPARMQ(ISPEC=14) = 0 causes TTQRE to skip a !> multi-shift QR sweep whenever early deflation !> finds a converged eigenvalue. Setting !> IPARMQ(ISPEC=14) greater than or equal to 100 !> prevents TTQRE from skipping a multi-shift !> QR sweep. !> !> ISPEC=15: (NSHFTS) The number of simultaneous shifts in !> a multi-shift QR iteration. !> !> ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the !> following meanings. !> 0: During the multi-shift QR/QZ sweep, !> blocked eigenvalue reordering, blocked !> Hessenberg-triangular reduction, !> reflections and/or rotations are not !> accumulated when updating the !> far-from-diagonal matrix entries. !> 1: During the multi-shift QR/QZ sweep, !> blocked eigenvalue reordering, blocked !> Hessenberg-triangular reduction, !> reflections and/or rotations are !> accumulated, and matrix-matrix !> multiplication is used to update the !> far-from-diagonal matrix entries. !> 2: During the multi-shift QR/QZ sweep, !> blocked eigenvalue reordering, blocked !> Hessenberg-triangular reduction, !> reflections and/or rotations are !> accumulated, and 2-by-2 block structure !> is exploited during matrix-matrix !> multiplies. !> (If xTRMM is slower than xGEMM, then !> IPARMQ(ISPEC=16)=1 may be more efficient than !> IPARMQ(ISPEC=16)=2 despite the greater level of !> arithmetic work implied by the latter choice.) !> !> ISPEC=17: (ICOST) An estimate of the relative cost of flops !> within the near-the-diagonal shift chase compared !> to flops within the BLAS calls of a QZ sweep. !>
NAME
!> NAME is CHARACTER string !> Name of the calling subroutine !>
OPTS
!> OPTS is CHARACTER string !> This is a concatenation of the string arguments to !> TTQRE. !>
N
!> N is INTEGER !> N is the order of the Hessenberg matrix H. !>
ILO
!> ILO is INTEGER !>
IHI
!> IHI is INTEGER !> It is assumed that H is already upper triangular !> in rows and columns 1:ILO-1 and IHI+1:N. !>
LWORK
!> LWORK is INTEGER !> The amount of workspace available. !>
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details:
!> !> Little is known about how best to choose these parameters. !> It is possible to use different values of the parameters !> for each of CHSEQR, DHSEQR, SHSEQR and ZHSEQR. !> !> It is probably best to choose different parameters for !> different matrices and different parameters at different !> times during the iteration, but this has not been !> implemented --- yet. !> !> !> The best choices of most of the parameters depend !> in an ill-understood way on the relative execution !> rate of xLAQR3 and xLAQR5 and on the nature of each !> particular eigenvalue problem. Experiment may be the !> only practical way to determine which choices are most !> effective. !> !> Following is a list of default values supplied by IPARMQ. !> These defaults may be adjusted in order to attain better !> performance in any particular computational environment. !> !> IPARMQ(ISPEC=12) The xLAHQR vs xLAQR0 crossover point. !> Default: 75. (Must be at least 11.) !> !> IPARMQ(ISPEC=13) Recommended deflation window size. !> This depends on ILO, IHI and NS, the !> number of simultaneous shifts returned !> by IPARMQ(ISPEC=15). The default for !> (IHI-ILO+1) <= 500 is NS. The default !> for (IHI-ILO+1) > 500 is 3*NS/2. !> !> IPARMQ(ISPEC=14) Nibble crossover point. Default: 14. !> !> IPARMQ(ISPEC=15) Number of simultaneous shifts, NS. !> a multi-shift QR iteration. !> !> If IHI-ILO+1 is ... !> !> greater than ...but less ... the !> or equal to ... than default is !> !> 0 30 NS = 2+ !> 30 60 NS = 4+ !> 60 150 NS = 10 !> 150 590 NS = ** !> 590 3000 NS = 64 !> 3000 6000 NS = 128 !> 6000 infinity NS = 256 !> !> (+) By default matrices of this order are !> passed to the implicit double shift routine !> xLAHQR. See IPARMQ(ISPEC=12) above. These !> values of NS are used only in case of a rare !> xLAHQR failure. !> !> (**) The asterisks (**) indicate an ad-hoc !> function increasing from 10 to 64. !> !> IPARMQ(ISPEC=16) Select structured matrix multiply. !> (See ISPEC=16 above for details.) !> Default: 3. !> !> IPARMQ(ISPEC=17) Relative cost heuristic for blocksize selection. !> Expressed as a percentage. !> Default: 10. !>
Definition at line 229 of file iparmq.f.
Author¶
Generated automatically by Doxygen for LAPACK from the source code.
Version 3.12.0 | LAPACK |