elpa_solve_evp_complex_2stage_double man page

elpa_solve_evp_complex_2stage_double — solve the double-precision complex eigenvalue problem with the 2-stage ELPA solver (legacy interface)

Synopsis

Fortran Interface

use elpa1 use elpa2

success = elpa_solve_evp_real_2stage_double (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_KERNEL, useGPU)

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*16,  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
complex*16,  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
int                        THIS_ELPA_COMPLEX_KERNEL: choose the compute kernel for 2-stage solver
logical, intent(in), optional: useGPU:               decide whether GPUs should be used or not
logical                    success:                  return value indicating success or failure

C Interface

#include "elpa_legacy.h"
#include <complex.h>

success = elpa_solve_evp_complex_2stage_double (int na, int nev, double complex *a, int lda, double *ev, double 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);

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 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
double         *ev:                       pointer to memory containing on output the first nev computed eigenvalues
double 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:                   decide whether GPUs should be used or not
int             success:                  return value indicating success (1) or failure (0)

Description

Solve the complex eigenvalue problem with the 2-stage solver. 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.
The interface elpa_solve_evp_complex(3) is a more flexible alternative.
This function is part of the legacy API of the ELPA library. Better use the current API.