EigenvalueSoLversforPetaflop-Applications(ELPA)  2016.05.001
Data Types | Functions/Subroutines | Variables
ELPA1 Module Reference

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...
 

Detailed Description

Fortran module which provides the routines to use the one-stage ELPA solver.

Function/Subroutine Documentation

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.

Parameters
mpi_comm_globalGlobal communicator for the calculations (in)
my_prowRow coordinate of the calling process in the process grid (in)
my_pcolColumn coordinate of the calling process in the process grid (in)
mpi_comm_rowsCommunicator for communicating within rows of processes (out)
mpi_comm_colsCommunicator for communicating within columns of processes (out)
Returns
mpierr integer error value of mpi_comm_split function
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

Parameters
naOrder of matrix a
nevNumber 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).
ldaLeading 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.
ldqLeading dimension of q
nblkblocksize of cyclic distribution, must be the same in both directions!
matrixColsdistributed number of matrix columns
mpi_comm_rowsMPI-Communicator for rows
mpi_comm_colsMPI-Communicator for columns
Returns
success
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

Parameters
naOrder of matrix a
nevNumber 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).
ldaLeading 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.
ldqLeading dimension of q
nblkblocksize of cyclic distribution, must be the same in both directions!
matrixColsdistributed number of matrix columns
mpi_comm_rowsMPI-Communicator for rows
mpi_comm_colsMPI-Communicator for columns
Returns
success

Variable Documentation

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