elpa_set - set parameter or tunables for the ELPA library
use elpa
class(elpa_t), pointer :: elpa
call elpa%set (character(*) name, datatype
value, integer error)
With the definitions of the input and output variables:
- character(*) :: name
- the name of the option to be set
- datatype :: value
- the value which should be assigned to the option name. The datatype
can be integer or real(kind=c_double).
- integer, optional :: error
- the returned error code. On success it is ELPA_OK, otherwise an error. The
error code can be querried with elpa_strerr(3)
#include <elpa/elpa.h>
elpa_t handle;
void elpa_set (elpa_t handle, const
char *name, datatype value, int *error);
With the definitions of the input and output variables:
- elpa_t handle;
- the handle of an ELPA object, obtained before with
elpa_allocate(3)"
- const char *name;
- the name of the option to be set.
- datatype value;
- the value which should be assigned to the option name. Datatype can
be either int or double."
The elpa_set function is used to set parameters and
tunables for the run-time of the ELPA library. It returns an error
code which can be querried with elpa_strerr(3).
Parameters:
Parameters of an ELPA instance have to be set BEFORE the
ELPA instance is set up with the function elpa_setup(3).
At the moment the following parameters are supported:
- "na":
- integer parameter. The global matrix has size (na * na)
- "nev":
- integer parameter. The number of eigenvectors to be computed in a call to
elpa_eigenvectors(3). Must have dimension 1 <= nev <=
na.
- "local_nrows":
- integer parameter. Number of matrix rows stored on this MPI process.
- "local_ncols":
- integer parameter. Number of matrix cols stored on this MPI process.
- "process_row":
- integer parameter. Process row number in the 2D domain decomposition.
- "process_col":
- integer parameter. Process col number in the 2D domain decomposition.
- "mpi_comm_parent":
- integer parameter. The parent MPI communicator which includes all MPI
process which are used in the 2D domain decomposition.
- "bandwidth":
- integer parameter. Some ELPA compute steps can be accelerated if the
matrix is already in banded form. If set, ELPA assumes that the bandwidth
of the matrix is the value set.
- "blacs_context":
- integer parameter. The generalized eigenvalue solver
elpa_generalized_eigenvectors(3) use internal calls to some of the
scalapack routines. Thus before calling it, the user has to provide
properly initialized blacs context.
- "timings":
- Choose whether time measurements should be done in the ELPA routines.
Tunables:
Tunables of an ELPA option can be set at anytime.
At the moment the following parameters are supported:
- "solver":
- Choose which solver should be used in the compute steps
elpa_eigenvalues(3) or elpa_eigenvectors(3). At the moment
allowed option are "ELPA_SOLVER_1STAGE" or
"ELPA_SOLVER_2STAGE".
- "real_kernel":
- Choose which real kernel should be used in the elpa_eigenvalues(3)
or elpa_eigenvectors(3) compute steps, if solver is set to
"ELPA_SOLVER_2STAGE". The available kernels can be
querried with elpa2_print_kernels(1).
- "complex_kernel":
- Choose which complex kernel should be used in the
elpa_eigenvalues(3) or elpa_eigenvectors(3) compute steps,
if solver is set to "ELPA_SOLVER_2STAGE". The available
kernels can be querried with elpa2_print_kernels(1).
- "qr":
- Choose whether in the real case computations in elpa_eigenvalues(3)
or elpa_eigenvectors(3) compute steps, if solver is set to
"ELPA_SOLVER_2STAGE", a QR decompostion should be
used.
- "qpu":
- Choose whether accelerated GPU calculations should be used. Only available
if ELPA has been build with GPU support.
- "debug":
- Choose whether, in case of an error, more debug information should be
provided.
elpa2_print_kernels(1) elpa_init(3)
elpa_allocate(3) elpa_setup(3) elpa_strerr(3)
elpa_eigenvalues(3) elpa_eigenvectors(3)
elpa_cholesky(3) elpa_invert_triangular(3)
elpa_solve_tridiagonal(3) elpa_hermitian_multiply(3)
elpa_deallocate(3) elpa_uninit(3)