PJLAENV(3) ScaLAPACK routine of NEC Numeric Library Collection PJLAENV(3) NAME PJLAENV is called from the ScaLAPACK symmetric and Hermitian tailored eigen-routines to choose problem-dependent parameters for the local environment. SYNOPSIS INTEGER FUNCTION PJLAENV( ICTXT, ISPEC, NAME, OPTS, N1, N2, N3, N4 ) CHARACTER*( * ) NAME, OPTS INTEGER ICTXT, ISPEC, N1, N2, N3, N4 PURPOSE PJLAENV is called from the ScaLAPACK symmetric and Hermitian tailored eigen-routines to choose problem-dependent 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 PJLAENV. = 1: the optimal blocksize; = 2: the panel blocking factor; = 3: the algorithmic blocking factor; = 4: execution path control; = 5: maximum size for direct call to the LAPACK routine 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. (PJLAENV) (global output) INTEGER >= 0: the value of the parameter specified by ISPEC < 0: if PJLAENV = -k, the k-th argument had an illegal value. Most parameters set via a call to PJLAENV must be identical on all processors and hence PJLAENV will return the same value to all procesors (i.e. global output). However some, in particu- lar, the panel blocking factor can be different on each proces- sor and hence PJLAENV can return different values on different processors (i.e. local output). Further Details =============== The following conventions have been used when calling PILAENV from the ScaLAPACK 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 PILAENV is checked for validity in the calling subroutine. For example, ILAENV is used to retrieve the optimal blocksize for STRTRI as follows: NB = PILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 ) IF( NB.LE.1 ) NB = MAX( 1, N ) PJLAENV is patterned after ILAENV and keeps the same interface in anticipation of future needs, even though PJLAENV is only sparsely used at present in ScaLAPACK. Most ScaLAPACK codes use the input data lay- out blocking factor as the algorithmic blocking factor - hence there is no need or opportunity to set the algorithmic or data decomposition blocking factor. pXYYtevx.f and pXYYtgvx.f and pXYYttrd.f are the only codes which call PJLAENV in this release. pXYYtevx.f and pXYYtgvx.f redistribute the data to the best data layout for each transformation. pXYYttrd.f uses a data layout blocking factor of 1 and a ScaLAPACK routine 31 October 2017 PJLAENV(3)