Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
iparmq
Environmental enquiry function which returns values for tuning algorithmic performance.
Syntax
valueiparmq ( ispec , name , opts , n , ilo , ihi , lwork )
Include Files
mkl.fi
Description
The function sets problem and machine dependent parameters useful for ?hseqr and its subroutines. It is called whenever ilaenv is called with 12≤ispec≤16 .
Input Parameters
- ispec
-
INTEGER . Specifies the parameter to be returned as the value of iparmq : = 12: ( inmin ) Matrices of order nmin or less are sent directly to ?lahqr , the implicit double shift QR algorithm. nmin must be at least 11 . = 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. = 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. = 15: ( nshfts ) The number of simultaneous shifts in a multi-shift QR iteration. = 16: ( iacc22 ) iparmq is set to 0 , 1 or 2 with the following meanings. 0: During the multi-shift QR sweep, ?laqr5 does not accumulate reflections and does not use matrix-matrix multiply to update the far-from-diagonal matrix entries. 1: During the multi-shift QR sweep, ?laqr5 and/or ?laqr3 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries. 2: During the multi-shift QR sweep, ?laqr5 accumulates reflections and takes advantage of 2-by-2 block structure during matrix-matrix multiplies. (If ?trrm is slower than ?gemm , 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.)
- name
-
CHARACTER*(*) . The name of the calling subroutine.
- opts
-
CHARACTER*(*) . This is a concatenation of the string arguments to TTQRE .
- n
-
INTEGER . n is the order of the Hessenberg matrix H .
- ilo , ihi
-
INTEGER . It is assumed that H is already upper triangular in rows and columns 1:ilo-1 and ihi+1:n .
- lwork
-
INTEGER . The amount of workspace available.
Output Parameters
- value
-
INTEGER . If value≥ 0 : the value of the parameter specified by iparmq ; If value = -k < 0 : the k -th argument had an illegal value.
Application Notes
The following conventions have been used when calling ilaenv from the LAPACK routines:
opts is a concatenation of all of the character options to subroutine name , in the same order that they appear in the argument list for name , even if they are not used in determining the value of the parameter specified by ispec .
The problem dimensions n1 , n2 , n3 , n4 are specified in the order that they appear in the argument list for name . n1 is used first, n2 second, and so on, and unused problem dimensions are passed a value of -1.
The parameter value returned by ilaenv is checked for validity in the calling subroutine. For example, ilaenv is used to retrieve the optimal blocksize for strtri as follows:
nb = ilaenv( 1, ‘strtri’, uplo // diag, n, -1, -1, -1> ) if( nb.le.1 ) nb = max( 1, n )