elpa_solve_evp_real_double - solve the real eigenvalue problem (legacy
interface)
use elpa_driver
success =
elpa_solve_evp_real_double (na, nev, a(lda,matrixCols),
ev(nev), q(ldq, matrixCols), ldq, nblk, matrixCols, mpi_comm_rows,
mpi_comm_cols, mpi_comm_all, THIS_REAL_ELPA_KERNEL, useQr, useGPU,
method=method)
Generalized interface to the ELPA 1stage and 2stage solver for real-valued
problems
With the definitions of the input and output variables:
integer, intent(in)
na: global dimension of quadratic matrix
a to
solve
integer, intent(in)
nev: number of eigenvalues to be computed; the first
nev eigenvalules are calculated
real*8, intent(inout)
a: locally distributed part of the matrix
a.
The local dimensions are
lda x
matrixCols
integer, intent(in)
lda: leading dimension of locally distributed matrix
a
real*8, intent(inout)
ev: on output the first
nev computed
eigenvalues
real*8, intent(inout)
q: on output the first
nev computed
eigenvectors
integer, intent(in)
ldq: leading dimension of matrix
q which
stores the eigenvectors
integer, intent(in)
nblk: blocksize of block cyclic distributin, must be
the same in both directions
integer, intent(in)
matrixCols: number of columns of locally distributed
matrices
a and
q
integer, intent(in)
mpi_comm_rows: communicator for communication in
rows. Constructed with
elpa_get_communicators(3)
integer, intent(in)
mpi_comm_cols: communicator for communication in
colums. Constructed with
elpa_get_communicators(3)
integer, intent(in)
mpi_comm_all: communicator for all processes in the
processor set involved in ELPA
integer, intent(in), optional:
THIS_REAL_ELPA_KERNEL: optional
argument, choose the compute kernel for 2-stage solver
logical, intent(in), optional:
useQR: optional argument; switches to
QR-decomposition if set to .true.
logical, optional, intent(in)
useGPU: specify whether GPUs should be used
or not used
character(*), optional
method: use 1stage solver if
1stage",use
2stagesolver
if2stage
,(at
themoment)
use2stage
solverif
auto
logical
success: return value indicating success or failure
#include "elpa_legacy.h"
success =
elpa_solve_evp_real_double (
int na,
int nev,
double *a,
int lda,
double *ev,
double *q,
int ldq,
int nblk,
int matrixCols,
int
mpi_comm_rows,
int mpi_comm_cols,
int mpi_comm_all,
int
THIS_ELPA_REAL_KERNEL,
int useQr,
int useGPU, char *method);
With the definitions of the input and output variables:
int
na: global dimension of quadratic matrix
a to solve
int
nev: number of eigenvalues to be computed; the first
nev
eigenvalules are calculated
double *
a: pointer to locally distributed part of the matrix
a.
The local dimensions are
lda x
matrixCols
int
lda: leading dimension of locally distributed matrix
a
double *
ev: pointer to memory containing on output the first
nev
computed eigenvalues
double *
q: pointer to memory containing on output the first
nev
computed eigenvectors
int
ldq: leading dimension of matrix
q which stores the
eigenvectors
int
nblk: blocksize of block cyclic distributin, must be the same in both
directions
int
matrixCols: number of columns of locally distributed matrices
a and
q
int
mpi_comm_rows: communicator for communication in rows. Constructed
with
elpa_get_communicators(3)
int
mpi_comm_cols: communicator for communication in colums. Constructed
with
elpa_get_communicators(3)
int
mpi_comm_all: communicator for all processes in the processor set
involved in ELPA
int
THIS_ELPA_REAL_KERNEL: choose the compute kernel for 2-stage solver
int
useQR: if set to 1 switch to QR-decomposition
int
useGPU: specify whether GPUS should be used or not
char *
method: use 1stage solver if
1stage",use
2stagesolver
if2stage
,(at
themoment)
use2stage
solverif
auto
int
success: return value indicating success (1) or failure (0)
Solve the real eigenvalue problem. The value of
method desides whether
the 1stage or 2stage solver is used. The ELPA communicators
mpi_comm_rows and
mpi_comm_cols are obtained with the
elpa_get_communicators(3) function. The distributed quadratic marix
a has global dimensions
na x
na, and a local size
lda x
matrixCols. The solver will compute the first
nev
eigenvalues, which will be stored on exit in
ev. The eigenvectors
corresponding to the eigenvalues will be stored in
q. All memory of the
arguments must be allocated outside the call to the solver.
This function is part of the legacy API of the ELPA library. Better use the
current API.
elpa_get_communicators(3)
elpa_solve_evp_real_single(3)
elpa_solve_evp_complex_double(3)
elpa_solve_evp_complex_single(3)
Current interface:
elpa2_print_kernels(1)