PILAENVX(3)   ScaLAPACK routine of NEC Numeric Library Collection  PILAENVX(3)



NAME
       PILAENVX  -  is  called  from the ScaLAPACK routines to choose problem-
       dependent parameters for the local environment

SYNOPSIS
       INTEGER FUNCTION PILAENVX(
                           ICTXT, ISPEC, NAME, OPTS, N1, N2, N3, N4 )

           CHARACTER*( * ) NAME, OPTS

           INTEGER         ICTXT, ISPEC, N1, N2, N3, N4

PURPOSE
       PILAENVX is called from the ScaLAPACK routines to choose problem-depen-
       dent parameters for the local environment.  See ISPEC for a description
       of the parameters.

       This version provides a set of parameters which should give  good,  but
       not  optimal, performance on many of the currently available computers.
       Users are encouraged to modify this subroutine to set the tuning param-
       eters  for  their  particular machine using the option and problem size
       information in the arguments.

       This routine will not function correctly if  it  is  converted  to  all
       lower case.  Converting it to all upper case is allowed.


ARGUMENTS
       ICTXT   (local input) INTEGER
               On  entry,   ICTXT  specifies the BLACS context handle, indica-
               ting the global  context of the operation. The  context  itself
               is global, but the value of ICTXT is local.

       ISPEC   (global input) INTEGER
               Specifies  the  parameter  to  be  returned  as  the  value  of
               PILAENVX.
               = 1: the optimal blocksize; if this value is 1, an unblocked
                    algorithm will give the best performance (unlikely).
               = 2: the minimum block size for which the block routine
                    should be used; if the usable block size is less than
                    this value, an unblocked routine should be used.
               = 3: the crossover point (in a block routine, for N less
                    than this value, an unblocked routine should be used)
               = 4: the number of shifts, used in the nonsymmetric
                    eigenvalue routines (DEPRECATED)
               = 5: the minimum column dimension for blocking to be used;
                    rectangular blocks must have dimension at least k by m,
                    where  k  is   given   by   PILAENVX(2,...)   and   m   by
               PILAENVX(5,...)
               = 6: the crossover point for the SVD (when reducing an m by n
                    matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
                    this value, a QR factorization is used first to reduce
                    the matrix to a triangular form.)
               = 7: the number of processors
               = 8: the crossover point for the multishift QR method
                    for nonsymmetric eigenvalue problems (DEPRECATED)
               = 9: maximum size of the subproblems at the bottom of the
                    computation tree in the divide-and-conquer algorithm
                    (used by xGELSD and xGESDD)
               =10: ieee NaN arithmetic can be trusted not to trap
               =11: infinity arithmetic can be trusted not to trap
               12 <= ISPEC <= 16:
                    PxHSEQR or one of its subroutines,
                    see PIPARMQ for detailed explanation
               17 <= ISPEC <= 22:
                    Parameters for PBxTRORD/PxHSEQR (not all), as follows:
                    =17: maximum number of concurrent computational windows;
                    =18: number of eigenvalues/bulges in each window;
                    =19: computational window size;
                    =20: minimal percentage of flops required for
                         performing matrix-matrix multiplications instead
                         of pipelined orthogonal transformations;
                    =21: width of block column slabs for row-wise
                         application of pipelined orthogonal
                         transformations in their factorized form;
                    =22: the maximum number of eigenvalues moved together
                         over a process border;
                    =23: the number of processors involved in AED;
               =99: Maximum iteration chunksize in OpenMP parallelization

       NAME    (global input) CHARACTER*(*)
               The  name  of  the  calling subroutine, in either upper case or
               lower case.

       OPTS    (global input) CHARACTER*(*)
               The character options to the subroutine NAME, concatenated into
               a  single  character  string.  For example, UPLO = 'U', TRANS =
               'T', and DIAG = 'N' for a triangular routine would be specified
               as OPTS = 'UTN'.

       N1      (global input) INTEGER

       N2      (global input) INTEGER

       N3      (global input) INTEGER

       N4      (global input) INTEGER
               Problem  dimensions  for the subroutine NAME; these may not all
               be required.

       (PILAENVX) (global output) INTEGER
               >= 0: the value of the parameter specified by ISPEC
               < 0:  if PILAENVX = -k, the k-th argument had an illegal value.


       Further Details
       ===============

       The  following  conventions have been used when calling ILAENV from the
       LAPACK routines:
       1)  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.
       2)  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.
       3)  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 )

       The same conventions will hold for this ScaLAPACK-style variant.




ScaLAPACK routine               31 October 2017                    PILAENVX(3)