EigenvalueSoLversforPetaflop-Applications(ELPA)
2016.05.001
|
Fortran module which provides the routines to use the one-stage ELPA solver. More...
Data Types | |
interface | get_elpa_row_col_comms |
get_elpa_row_col_comms: old, deprecated Fortran function to create the MPI communicators for ELPA. Better use "elpa_get_communicators" The interface and variable definition is the same as in "elpa_get_communicators" More... | |
interface | solve_evp_complex |
solve_evp_complex: old, deprecated Fortran function to solve the complex eigenvalue problem with 1-stage solver. Better use "solve_evp_complex_1stage" More... | |
interface | solve_evp_real |
solve_evp_real: old, deprecated Fortran function to solve the real eigenvalue problem with 1-stage solver. Better use "solve_evp_real_1stage" More... | |
Functions/Subroutines | |
integer(kind=ik) function, public | get_elpa_communicators (mpi_comm_global, my_prow, my_pcol, mpi_comm_rows, mpi_comm_cols) |
Fortran function to create the MPI communicators for ELPA. More... | |
logical function, public | solve_evp_real_1stage (na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols) |
solve_evp_real_1stage: Fortran function to solve the real eigenvalue problem with 1-stage solver More... | |
logical function, public | solve_evp_complex_1stage (na, nev, a, lda, ev, q, ldq, nblk, matrixCols, mpi_comm_rows, mpi_comm_cols) |
solve_evp_complex_1stage: Fortran function to solve the complex eigenvalue problem with 1-stage solver More... | |
Variables | |
real(kind=rk), public | time_evp_fwd |
time for forward transformations (to tridiagonal form) More... | |
real(kind=rk), public | time_evp_solve |
time for solving the tridiagonal system More... | |
real(kind=rk), public | time_evp_back |
time for back transformations of eigenvectors More... | |
logical, public | elpa_print_times = .false. |
Set elpa_print_times to .true. for explicit timing outputs. More... | |
Fortran module which provides the routines to use the one-stage ELPA solver.
integer(kind=ik) function, public ELPA1::get_elpa_communicators | ( | integer(kind=ik), intent(in) | mpi_comm_global, |
integer(kind=ik), intent(in) | my_prow, | ||
integer(kind=ik), intent(in) | my_pcol, | ||
integer(kind=ik), intent(out) | mpi_comm_rows, | ||
integer(kind=ik), intent(out) | mpi_comm_cols | ||
) |
Fortran function to create the MPI communicators for ELPA.
mpi_comm_global | Global communicator for the calculations (in) |
my_prow | Row coordinate of the calling process in the process grid (in) |
my_pcol | Column coordinate of the calling process in the process grid (in) |
mpi_comm_rows | Communicator for communicating within rows of processes (out) |
mpi_comm_cols | Communicator for communicating within columns of processes (out) |
logical function, public ELPA1::solve_evp_complex_1stage | ( | integer(kind=ik), intent(in) | na, |
integer(kind=ik), intent(in) | nev, | ||
complex(kind=ck), dimension(lda,matrixcols) | a, | ||
integer(kind=ik), intent(in) | lda, | ||
real(kind=rk), dimension(na) | ev, | ||
complex(kind=ck), dimension(ldq,matrixcols) | q, | ||
integer(kind=ik), intent(in) | ldq, | ||
integer(kind=ik), intent(in) | nblk, | ||
integer(kind=ik), intent(in) | matrixCols, | ||
integer(kind=ik), intent(in) | mpi_comm_rows, | ||
integer(kind=ik), intent(in) | mpi_comm_cols | ||
) |
solve_evp_complex_1stage: Fortran function to solve the complex eigenvalue problem with 1-stage solver
na | Order of matrix a |
nev | Number of eigenvalues needed. The smallest nev eigenvalues/eigenvectors are calculated. |
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 | distributed number of matrix columns |
mpi_comm_rows | MPI-Communicator for rows |
mpi_comm_cols | MPI-Communicator for columns |
logical function, public ELPA1::solve_evp_real_1stage | ( | integer(kind=ik), intent(in) | na, |
integer(kind=ik), intent(in) | nev, | ||
real(kind=rk), dimension(lda,matrixcols) | a, | ||
integer(kind=ik), intent(in) | lda, | ||
real(kind=rk), dimension(na) | ev, | ||
real(kind=rk), dimension(ldq,matrixcols) | q, | ||
integer(kind=ik), intent(in) | ldq, | ||
integer(kind=ik), intent(in) | nblk, | ||
integer(kind=ik), intent(in) | matrixCols, | ||
integer(kind=ik), intent(in) | mpi_comm_rows, | ||
integer(kind=ik), intent(in) | mpi_comm_cols | ||
) |
solve_evp_real_1stage: Fortran function to solve the real eigenvalue problem with 1-stage solver
na | Order of matrix a |
nev | Number of eigenvalues needed. The smallest nev eigenvalues/eigenvectors are calculated. |
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 | distributed number of matrix columns |
mpi_comm_rows | MPI-Communicator for rows |
mpi_comm_cols | MPI-Communicator for columns |
logical, public ELPA1::elpa_print_times = .false. |
Set elpa_print_times to .true. for explicit timing outputs.
real(kind=rk), public ELPA1::time_evp_back |
time for back transformations of eigenvectors
real(kind=rk), public ELPA1::time_evp_fwd |
time for forward transformations (to tridiagonal form)
real(kind=rk), public ELPA1::time_evp_solve |
time for solving the tridiagonal system