Eigenvalue SoLvers for Petaflop-Applications (ELPA) 2025.01.002
Loading...
Searching...
No Matches
elpa_impl_math_generalized_template.F90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine elpa_generalized_eigenvectors_a_h_a_ELPA_IMPL_SUFFIX (self, a, b, ev, q, is_already_decomposed, error)
 elpa_generalized_eigenvectors_a_h_a: class method to solve the eigenvalue problem, using host arrays
 
subroutine elpa_generalized_eigenvectors_a_h_a_ELPA_IMPL_SUFFIX_c (handle, a_p, b_p, ev_p, q_p, is_already_decomposed, error)
 
subroutine elpa_generalized_eigenvectors_d_ptr_ELPA_IMPL_SUFFIX (self, adev, bdev, evdev, qdev, is_already_decomposed, error)
 elpa_generalized_eigenvectors_d_ptr: class method to solve the eigenvalue problem, using device pointers
 
subroutine elpa_generalized_eigenvectors_d_ptr_ELPA_IMPL_SUFFIX_c (handle, a_p, b_p, ev_p, q_p, is_already_decomposed, error)
 
subroutine elpa_generalized_eigenvalues_a_h_a_ELPA_IMPL_SUFFIX (self, a, b, ev, is_already_decomposed, error)
 elpa_generalized_eigenvalues_a_h_a: class method to solve the eigenvalue problem, using host arrays
 
subroutine elpa_generalized_eigenvalues_a_h_a_ELPA_IMPL_SUFFIX_c (handle, a_p, b_p, ev_p, is_already_decomposed, error)
 
subroutine elpa_generalized_eigenvalues_d_ptr_ELPA_IMPL_SUFFIX (self, adev, bdev, evdev, is_already_decomposed, error)
 elpa_generalized_eigenvalues_d_ptr: class method to solve the eigenvalue problem, using device pointers
 
subroutine elpa_generalized_eigenvalues_d_ptr_ELPA_IMPL_SUFFIX_c (handle, a_p, b_p, ev_p, is_already_decomposed, error)
 

Function/Subroutine Documentation

◆ elpa_generalized_eigenvalues_a_h_a_ELPA_IMPL_SUFFIX()

subroutine elpa_generalized_eigenvalues_a_h_a_ELPA_IMPL_SUFFIX ( class(elpa_impl_t) self,
a,
b,
real(kind=c_real_datatype), dimension(self%na) ev,
logical is_already_decomposed,
integer, optional error )

elpa_generalized_eigenvalues_a_h_a: class method to solve the eigenvalue problem, using host arrays

The dimensions of the matrix a (locally ditributed and global), the block-cyclic distribution blocksize, the number of eigenvectors to be computed and the MPI communicators are already known to the object and MUST be set BEFORE with the class method "setup"

It is possible to change the behaviour of the method by setting tunable parameters with the class method "set"

Parameters

Parameters
aDistributed 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).
bDistributed matrix, part of the generalized eigenvector problem, or the product of a previous call to this function (see is_already_decomposed). Distribution is like in Scalapack. If is_already_decomposed is false, on exit replaced by the decomposition
evOn output: eigenvalues of a, every processor gets the complete set
is_already_decomposedhas to be set to .false. for the first call with a given b and .true. for each subsequent call with the same b, since b then already contains decomposition and thus the decomposing step is skipped
errorinteger, optional: returns an error code, which can be queried with elpa_strerr

◆ elpa_generalized_eigenvalues_a_h_a_ELPA_IMPL_SUFFIX_c()

subroutine elpa_generalized_eigenvalues_a_h_a_ELPA_IMPL_SUFFIX_c ( value handle,
value a_p,
value b_p,
value ev_p,
integer(kind=c_int), intent(in), value is_already_decomposed,
integer(kind=c_int), intent(in) error )

◆ elpa_generalized_eigenvalues_d_ptr_ELPA_IMPL_SUFFIX()

subroutine elpa_generalized_eigenvalues_d_ptr_ELPA_IMPL_SUFFIX ( class(elpa_impl_t) self,
type(c_ptr) adev,
type(c_ptr) bdev,
type(c_ptr) evdev,
logical is_already_decomposed,
integer, optional error )

elpa_generalized_eigenvalues_d_ptr: class method to solve the eigenvalue problem, using device pointers

The dimensions of the matrix a (locally ditributed and global), the block-cyclic distribution blocksize, the number of eigenvectors to be computed and the MPI communicators are already known to the object and MUST be set BEFORE with the class method "setup"

It is possible to change the behaviour of the method by setting tunable parameters with the class method "set"

Parameters

Parameters
aDistributed 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).
bDistributed matrix, part of the generalized eigenvector problem, or the product of a previous call to this function (see is_already_decomposed). Distribution is like in Scalapack. If is_already_decomposed is false, on exit replaced by the decomposition
evOn output: eigenvalues of a, every processor gets the complete set
is_already_decomposedhas to be set to .false. for the first call with a given b and .true. for each subsequent call with the same b, since b then already contains decomposition and thus the decomposing step is skipped
errorinteger, optional: returns an error code, which can be queried with elpa_strerr

◆ elpa_generalized_eigenvalues_d_ptr_ELPA_IMPL_SUFFIX_c()

subroutine elpa_generalized_eigenvalues_d_ptr_ELPA_IMPL_SUFFIX_c ( value handle,
value a_p,
value b_p,
value ev_p,
integer(kind=c_int), intent(in), value is_already_decomposed,
integer(kind=c_int), intent(in) error )

◆ elpa_generalized_eigenvectors_a_h_a_ELPA_IMPL_SUFFIX()

subroutine elpa_generalized_eigenvectors_a_h_a_ELPA_IMPL_SUFFIX ( class(elpa_impl_t) self,
a,
b,
real(kind=c_real_datatype), dimension(self%na) ev,
q,
logical is_already_decomposed,
integer, optional error )

elpa_generalized_eigenvectors_a_h_a: class method to solve the eigenvalue problem, using host arrays

The dimensions of the matrix a (locally ditributed and global), the block-cyclic distribution blocksize, the number of eigenvectors to be computed and the MPI communicators are already known to the object and MUST be set BEFORE with the class method "setup"

It is possible to change the behaviour of the method by setting tunable parameters with the class method "set"

Parameters

Parameters
aDistributed 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).
bDistributed matrix, part of the generalized eigenvector problem, or the product of a previous call to this function (see is_already_decomposed). Distribution is like in Scalapack. If is_already_decomposed is false, on exit replaced by the decomposition
evOn output: eigenvalues of a, every processor gets the complete set
qOn 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.
is_already_decomposedhas to be set to .false. for the first call with a given b and .true. for each subsequent call with the same b, since b then already contains decomposition and thus the decomposing step is skipped
errorinteger, optional: returns an error code, which can be queried with elpa_strerr

◆ elpa_generalized_eigenvectors_a_h_a_ELPA_IMPL_SUFFIX_c()

subroutine elpa_generalized_eigenvectors_a_h_a_ELPA_IMPL_SUFFIX_c ( value handle,
value a_p,
value b_p,
value ev_p,
value q_p,
integer(kind=c_int), intent(in), value is_already_decomposed,
integer(kind=c_int), intent(in) error )

◆ elpa_generalized_eigenvectors_d_ptr_ELPA_IMPL_SUFFIX()

subroutine elpa_generalized_eigenvectors_d_ptr_ELPA_IMPL_SUFFIX ( class(elpa_impl_t) self,
type(c_ptr) adev,
type(c_ptr) bdev,
type(c_ptr) evdev,
type(c_ptr) qdev,
logical is_already_decomposed,
integer, optional error )

elpa_generalized_eigenvectors_d_ptr: class method to solve the eigenvalue problem, using device pointers

The dimensions of the matrix a (locally ditributed and global), the block-cyclic distribution blocksize, the number of eigenvectors to be computed and the MPI communicators are already known to the object and MUST be set BEFORE with the class method "setup"

It is possible to change the behaviour of the method by setting tunable parameters with the class method "set"

Parameters

Parameters
aDistributed 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).
bDistributed matrix, part of the generalized eigenvector problem, or the product of a previous call to this function (see is_already_decomposed). Distribution is like in Scalapack. If is_already_decomposed is false, on exit replaced by the decomposition
evOn output: eigenvalues of a, every processor gets the complete set
qOn 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.
is_already_decomposedhas to be set to .false. for the first call with a given b and .true. for each subsequent call with the same b, since b then already contains decomposition and thus the decomposing step is skipped
errorinteger, optional: returns an error code, which can be queried with elpa_strerr

◆ elpa_generalized_eigenvectors_d_ptr_ELPA_IMPL_SUFFIX_c()

subroutine elpa_generalized_eigenvectors_d_ptr_ELPA_IMPL_SUFFIX_c ( value handle,
value a_p,
value b_p,
value ev_p,
value q_p,
integer(kind=c_int), intent(in), value is_already_decomposed,
integer(kind=c_int), intent(in) error )