elpa_solve_evp_real_2stage_double man page

elpa_solve_evp_real_2stage_double — solve the double-precision real 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_REAL_ELPA_KERNEL, useQR, 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
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_ELPA_REAL_KERNEL: choose the compute kernel for 2-stage solver
logical, intent(in), optional: useQR:         optional argument; switches to QR-decomposition if set to .true.
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"

success = elpa_solve_evp_real_2stage_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);

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:                decide whether GPUs should be used or not
int     success:               return value indicating success (1) or failure (0)

Description

Solve the real 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_real(3) is a more flexible alternative.
This function is part of the legacy API of the ELPA library. Better use the current API.

See Also

Old interface: elpa_get_communicators(3) elpa_solve_evp_real(3) elpa_solve_evp_complex(3) elpa_solve_evp_real_1stage(3) elpa_solve_evp_complex_1stage(3)  elpa_solve_evp_real_2stage_single(3) elpa_solve_evp_complex_2stage_double(3) elpa_solve_evp_complex_2stage_singe(3)
Current interface: elpa2_print_kernels(1)

Referenced By

elpa_solve_evp_complex_1stage_double(3), elpa_solve_evp_complex_2stage_double(3), solve_evp_complex(3), solve_evp_real(3).

Wed May 17 2017 ELPA