elpa_solve_evp_complex_single - solve the complex eigenvalue problem with either
the 1-satge or the 2-stage ELPA solver (legacy interface)
use elpa_driver
success =
elpa_solve_evp_complex_single (na, nev, a(lda,matrixCols),
ev(nev), q(ldq, matrixCols), ldq, nblk, matrixCols, mpi_comm_rows,
mpi_comm_cols, mpi_comm_all, THIS_COMPLEX_ELPA_KERNE, useGPU, method)
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
complex*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*4, intent(inout)
ev: on output the first
nev computed
eigenvalues
complex*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
logical, optional, intent(in)
useGPU: specify whether GPUs should be used
or not used
int
THIS_ELPA_COMPLEX_KERNEL: choose the compute kernel for 2-stage
solver
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"
#include <complex.h>
success =
elpa_solve_evp_complex_single (
int na,
int nev,
complex *a,
int lda,
float *ev,
complex *q,
int ldq,
int nblk,
int matrixCols,
int
mpi_comm_rows,
int mpi_comm_cols,
int mpi_comm_all,
int
THIS_ELPA_COMPLEX_KERNEL,
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
complex *
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
float *
ev: pointer to memory containing on output the first
nev
computed eigenvalues
complex *
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_COMPLEX_KERNEL: choose the compute kernel for 2-stage
solver
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 complex 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.
Old interface:
elpa_get_communicators(3)
elpa_solve_evp_real_double(3)
elpa_solve_evp_real_single(3)
elpa_solve_evp_complex_double(3)
Current interface:
elpa2_print_kernels(1)