Eigenvalue SoLvers for Petaflop-Applications (ELPA)
2016.05.004
|
Fortran module which provides the routines to the ELPA solver (1 and 2 stage) More...
Functions/Subroutines | |
logical function, public | elpa_solve_evp_real (na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, mpi_comm_all, THIS_REAL_ELPA_KERNEL_API, useQR, method) |
solve_evp_real: Fortran function to solve the real eigenvalue problem with either the ELPA 1stage or the ELPA 2stage solver More... | |
logical function, public | elpa_solve_evp_complex (na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols, mpi_comm_all, THIS_COMPLEX_ELPA_KERNEL_API, method) |
solve_evp_complex: Fortran function to solve the complex eigenvalue problem with either the ELPA 1stage or the ELPA 2stage solver More... | |
Fortran module which provides the routines to the ELPA solver (1 and 2 stage)
logical function, public ELPA::elpa_solve_evp_complex | ( | integer(kind=c_int), intent(in) | na, |
integer(kind=c_int), intent(in) | nev, | ||
complex(kind=c_double), dimension(lda,*), intent(inout) | a, | ||
integer(kind=c_int), intent(in) | lda, | ||
real(kind=c_double), dimension(na), intent(inout) | ev, | ||
complex(kind=c_double), dimension(ldq,*), intent(inout) | q, | ||
integer(kind=c_int), intent(in) | ldq, | ||
integer(kind=c_int), intent(in) | nblk, | ||
integer(kind=c_int), intent(in) | matrixCols, | ||
integer(kind=c_int), intent(in) | mpi_comm_rows, | ||
integer(kind=c_int), intent(in) | mpi_comm_cols, | ||
integer(kind=c_int), intent(in) | mpi_comm_all, | ||
integer(kind=c_int), intent(in), optional | THIS_COMPLEX_ELPA_KERNEL_API, | ||
character(*), intent(in), optional | method | ||
) |
solve_evp_complex: Fortran function to solve the complex eigenvalue problem with either the ELPA 1stage or the ELPA 2stage solver
Parameters
na | Order of matrix a |
nev | Number of eigenvalues needed |
a(lda,matrixCols) | Distributed matrix for which eigenvalues are to be computed. Distribution is like in Scalapack. The full matrix must be set (not only one half like in scalapack). Destroyed on exit (upper and lower half). |
lda | Leading dimension of a |
ev(na) | On output: eigenvalues of a, every processor gets the complete set |
q(ldq,matrixCols) | On output: Eigenvectors of a Distribution is like in Scalapack. Must be always dimensioned to the full size (corresponding to (na,na)) even if only a part of the eigenvalues is needed. |
ldq | Leading dimension of q |
nblk | blocksize of cyclic distribution, must be the same in both directions! |
matrixCols | local columns of matrix a and q |
mpi_comm_rows | MPI communicator for rows |
mpi_comm_cols | MPI communicator for columns |
mpi_comm_all | MPI communicator for the total processor set |
THIS_REAL_COMPLEX_KERNEL_API | (optional) specify used ELPA 2stage kernel via API (only evalulated if 2 stage solver is used_ |
method | choose whether to use ELPA 1stage or 2stage solver possible values: "1stage" => use ELPA 1stage solver "2stage" => use ELPA 2stage solver "auto" => (at the moment) use ELPA 2stage solver |
logical function, public ELPA::elpa_solve_evp_real | ( | integer(kind=c_int), intent(in) | na, |
integer(kind=c_int), intent(in) | nev, | ||
real(kind=c_double), dimension(lda,*), intent(inout) | a, | ||
integer(kind=c_int), intent(in) | lda, | ||
real(kind=c_double), dimension(na), intent(inout) | ev, | ||
real(kind=c_double), dimension(ldq,*), intent(inout) | q, | ||
integer(kind=c_int), intent(in) | ldq, | ||
integer(kind=c_int), intent(in) | nblk, | ||
integer(kind=c_int), intent(in) | matrixCols, | ||
integer(kind=c_int), intent(in) | mpi_comm_rows, | ||
integer(kind=c_int), intent(in) | mpi_comm_cols, | ||
integer(kind=c_int), intent(in) | mpi_comm_all, | ||
integer(kind=c_int), intent(in), optional | THIS_REAL_ELPA_KERNEL_API, | ||
logical, intent(in), optional | useQR, | ||
character(*), intent(in), optional | method | ||
) |
solve_evp_real: Fortran function to solve the real eigenvalue problem with either the ELPA 1stage or the ELPA 2stage solver
Parameters
na | Order of matrix a |
nev | Number of eigenvalues needed |
a(lda,matrixCols) | Distributed matrix for which eigenvalues are to be computed. Distribution is like in Scalapack. The full matrix must be set (not only one half like in scalapack). Destroyed on exit (upper and lower half). |
lda | Leading dimension of a |
ev(na) | On output: eigenvalues of a, every processor gets the complete set |
q(ldq,matrixCols) | On output: Eigenvectors of a Distribution is like in Scalapack. Must be always dimensioned to the full size (corresponding to (na,na)) even if only a part of the eigenvalues is needed. |
ldq | Leading dimension of q |
nblk | blocksize of cyclic distribution, must be the same in both directions! |
matrixCols | local columns of matrix a and q |
mpi_comm_rows | MPI communicator for rows |
mpi_comm_cols | MPI communicator for columns |
mpi_comm_all | MPI communicator for the total processor set |
THIS_REAL_ELPA_KERNEL_API | (optional) specify used ELPA 2stage kernel via API (only evalulated if 2 stage solver is used_ |
use_qr | (optional) use QR decomposition in the ELPA 2stage solver |
method | choose whether to use ELPA 1stage or 2stage solver possible values: "1stage" => use ELPA 1stage solver "2stage" => use ELPA 2stage solver "auto" => (at the moment) use ELPA 2stage solver |