FM_DIAG_SETTINGS
This section defines a set of heuristic rules which are used to calculate the optimal number of CPUs, M, needed to diagonalize a full matrix distributed on N processors (FM type). If M < N, the matrix is redistributed onto M processors before it is diagonalized. The optimal value is calculate according to M = ((K+ax-1)/(ax))*a, where K is the size of the matrix, and {a, x} are integers defined below. The default values have been selected based on timings on a Cray XE6. Supports diagonalization libraries SL and ELPA (see keyword ELPA_FORCE_REDISTRIBUTE). [Edit on GitHub]
Keywords
Keyword descriptions
- ELPA_FORCE_REDISTRIBUTE
Type: logical
Default: T
Lone keyword: T
Usage: ELPA_FORCE_REDISTRIBUTEDescription: Controls how to perform redistribution when ELPA is used for diagonalization. By default, redistribution is always performed using the defined rules. By turning off this keyword, matrices are redistributed only to prevent crashes in the ELPA library which happens when the original matrix is distributed over too many processors.
- PARAMETER_A
Type: integer
Default: 4
Usage: PARAMETER_A 4Description: Parameter used for defining the rule which determines the optimal number of CPUs needed to diagonalize a full distributed matrix. The optimal number of CPUs will be an integer multiple of this variable.
- PARAMETER_X
Type: integer
Default: 60
Usage: PARAMETER_X 60Description: Parameter used for defining the rule which determines the optimal number of CPUs needed to diagonalize a full distributed matrix. The optimal number of CPUs will be roughly proportional to this value.
- PRINT_FM_REDISTRIBUTE
Type: logical
Default: F
Lone keyword: T
Usage: PRINT_FM_REDISTRIBUTEDescription: Controls printing of information related to this section. For each diagonalized matrix, prints the size of the matrix, the optimal number of CPUs, as well as notifies if the matrix was redistributed. Useful for testing.