Eigenvalue SoLvers for Petaflop-Applications (ELPA) 2024.03.001
|
Go to the source code of this file.
Functions/Subroutines | |
subroutine | elpa_hermitian_multiply_a_h_a_ELPA_IMPL_SUFFIX (self, uplo_a, uplo_c, ncb, a, b, nrows_b, ncols_b, c, nrows_c, ncols_c, error) |
elpa_hermitian_multiply_a_h_a_d: class method to perform C : = A**T * B where A is a square matrix (selfna,selfna) which is optionally upper or lower triangular B is a (selfna,ncb) matrix C is a (selfna,ncb) matrix where optionally only the upper or lower triangle may be computed | |
subroutine | elpa_hermitian_multiply_d_ptr_ELPA_IMPL_SUFFIX (self, uplo_a, uplo_c, ncb, a, b, nrows_b, ncols_b, c, nrows_c, ncols_c, error) |
elpa_hermitian_multiply_d_ptr_d: class method to perform C : = A**T * B where A is a square matrix (selfna,selfna) which is optionally upper or lower triangular B is a (selfna,ncb) matrix C is a (selfna,ncb) matrix where optionally only the upper or lower triangle may be computed | |
subroutine | elpa_hermitian_multiply_a_h_a_ELPA_IMPL_SUFFIX_c (handle, uplo_a, uplo_c, ncb, a_p, b_p, nrows_b, ncols_b, c_p, nrows_c, ncols_c, error) |
subroutine | elpa_hermitian_multiply_d_ptr_ELPA_IMPL_SUFFIX_c (handle, uplo_a, uplo_c, ncb, a_p, b_p, nrows_b, ncols_b, c_p, nrows_c, ncols_c, error) |
subroutine | elpa_cholesky_a_h_a_ELPA_IMPL_SUFFIX (self, a, error) |
elpa_cholesky_a_h_a_d: class method to do a cholesky factorization | |
subroutine | elpa_choleksy_a_h_a_ELPA_IMPL_SUFFIX_c (handle, a_p, error) |
subroutine | elpa_cholesky_d_ptr_ELPA_IMPL_SUFFIX (self, a, error) |
elpa_cholesky_d_ptr_d: class method to do a cholesky factorization | |
subroutine | elpa_choleksy_d_ptr_ELPA_IMPL_SUFFIX_c (handle, a_p, error) |
subroutine | elpa_invert_trm_a_h_a_ELPA_IMPL_SUFFIX (self, a, error) |
elpa_invert_trm_a_h_a_d: class method to invert a triangular | |
subroutine | elpa_invert_trm_a_h_a_ELPA_IMPL_SUFFIX_c (handle, a_p, error) |
subroutine | elpa_invert_trm_d_ptr_ELPA_IMPL_SUFFIX (self, a, error) |
elpa_invert_trm_d_ptr_d: class method to invert a triangular | |
subroutine | elpa_invert_trm_d_ptr_ELPA_IMPL_SUFFIX_c (handle, a_p, error) |
subroutine | elpa_solve_tridiagonal_ELPA_IMPL_SUFFIX (self, d, e, q, error) |
elpa_solve_tridiagonal_d: class method to solve the eigenvalue problem for a tridiagonal matrix a | |
subroutine | elpa_solve_tridiagonal_ELPA_IMPL_SUFFIX_c (handle, d_p, e_p, q_p, error) |
subroutine elpa_choleksy_a_h_a_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
value | a_p, | ||
integer(kind=c_int), intent(in) | error ) |
subroutine elpa_choleksy_d_ptr_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
value | a_p, | ||
integer(kind=c_int), intent(in) | error ) |
subroutine elpa_cholesky_a_h_a_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
a, | |||
integer | error ) |
elpa_cholesky_a_h_a_d: class method to do a cholesky factorization
The dimensions of the matrix a (locally ditributed and global), the block-cylic-distribution block size, 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
a | 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). |
error | integer, optional: returns an error code, which can be queried with elpa_strerr |
subroutine elpa_cholesky_d_ptr_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
type(c_ptr) | a, | ||
integer | error ) |
elpa_cholesky_d_ptr_d: class method to do a cholesky factorization
The dimensions of the matrix a (locally ditributed and global), the block-cylic-distribution block size, 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
a | Distributed matrix for which eigenvalues are to be computed as type(c_ptr) on a device 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). |
error | integer, optional: returns an error code, which can be queried with elpa_strerr |
subroutine elpa_hermitian_multiply_a_h_a_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
character*1 | uplo_a, | ||
character*1 | uplo_c, | ||
integer(kind=c_int), intent(in) | ncb, | ||
a, | |||
b, | |||
integer(kind=c_int), intent(in) | nrows_b, | ||
integer(kind=c_int), intent(in) | ncols_b, | ||
c, | |||
integer(kind=c_int), intent(in) | nrows_c, | ||
integer(kind=c_int), intent(in) | ncols_c, | ||
integer, optional | error ) |
elpa_hermitian_multiply_a_h_a_d: class method to perform C : = A**T * B where A is a square matrix (selfna,selfna) which is optionally upper or lower triangular B is a (selfna,ncb) matrix C is a (selfna,ncb) matrix where optionally only the upper or lower triangle may be computed
the MPI commicators and the block-cyclic distribution block size are already known to the type. Thus the class method "setup" must be called BEFORE this method is used
self | class(elpa_t), the ELPA object |
uplo_a | 'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers |
uplo_c | 'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there! |
ncb | Number of columns of global matrices B and C |
a | matrix a |
local_nrows | number of rows of local (sub) matrix a, set with class method set("local_nrows",value) |
local_ncols | number of columns of local (sub) matrix a, set with class method set("local_ncols",value) |
b | matrix b |
nrows_b | number of rows of local (sub) matrix b |
ncols_b | number of columns of local (sub) matrix b |
c | matrix c |
nrows_c | number of rows of local (sub) matrix c |
ncols_c | number of columns of local (sub) matrix c |
error | optional argument, error code which can be queried with elpa_strerr |
subroutine elpa_hermitian_multiply_a_h_a_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
character(1,c_char), value | uplo_a, | ||
character(1,c_char), value | uplo_c, | ||
integer(kind=c_int), value | ncb, | ||
value | a_p, | ||
value | b_p, | ||
integer(kind=c_int), value | nrows_b, | ||
integer(kind=c_int), value | ncols_b, | ||
value | c_p, | ||
integer(kind=c_int), value | nrows_c, | ||
integer(kind=c_int), value | ncols_c, | ||
integer(kind=c_int), intent(in) | error ) |
subroutine elpa_hermitian_multiply_d_ptr_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
character*1 | uplo_a, | ||
character*1 | uplo_c, | ||
integer(kind=c_int), intent(in) | ncb, | ||
type(c_ptr) | a, | ||
type(c_ptr) | b, | ||
integer(kind=c_int), intent(in) | nrows_b, | ||
integer(kind=c_int), intent(in) | ncols_b, | ||
type(c_ptr) | c, | ||
integer(kind=c_int), intent(in) | nrows_c, | ||
integer(kind=c_int), intent(in) | ncols_c, | ||
integer | error ) |
elpa_hermitian_multiply_d_ptr_d: class method to perform C : = A**T * B where A is a square matrix (selfna,selfna) which is optionally upper or lower triangular B is a (selfna,ncb) matrix C is a (selfna,ncb) matrix where optionally only the upper or lower triangle may be computed
the MPI commicators and the block-cyclic distribution block size are already known to the type. Thus the class method "setup" must be called BEFORE this method is used
self | class(elpa_t), the ELPA object |
uplo_a | 'U' if A is upper triangular 'L' if A is lower triangular anything else if A is a full matrix Please note: This pertains to the original A (as set in the calling program) whereas the transpose of A is used for calculations If uplo_a is 'U' or 'L', the other triangle is not used at all, i.e. it may contain arbitrary numbers |
uplo_c | 'U' if only the upper diagonal part of C is needed 'L' if only the upper diagonal part of C is needed anything else if the full matrix C is needed Please note: Even when uplo_c is 'U' or 'L', the other triangle may be written to a certain extent, i.e. one shouldn't rely on the content there! |
ncb | Number of columns of global matrices B and C |
a | matrix a, as device pointer of type(c_ptr) |
local_nrows | number of rows of local (sub) matrix a, set with class method set("local_nrows",value) |
local_ncols | number of columns of local (sub) matrix a, set with class method set("local_ncols",value) |
b | matrix b, as device pointer of type(c_ptr) |
nrows_b | number of rows of local (sub) matrix b |
ncols_b | number of columns of local (sub) matrix b |
c | matrix c, as device pointer of type(c_ptr) |
nrows_c | number of rows of local (sub) matrix c |
ncols_c | number of columns of local (sub) matrix c |
error | optional argument, error code which can be queried with elpa_strerr |
subroutine elpa_hermitian_multiply_d_ptr_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
character(1,c_char), value | uplo_a, | ||
character(1,c_char), value | uplo_c, | ||
integer(kind=c_int), value | ncb, | ||
value | a_p, | ||
value | b_p, | ||
integer(kind=c_int), value | nrows_b, | ||
integer(kind=c_int), value | ncols_b, | ||
value | c_p, | ||
integer(kind=c_int), value | nrows_c, | ||
integer(kind=c_int), value | ncols_c, | ||
integer(kind=c_int), intent(in) | error ) |
subroutine elpa_invert_trm_a_h_a_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
a, | |||
integer | error ) |
elpa_invert_trm_a_h_a_d: class method to invert a triangular
The dimensions of the matrix a (locally ditributed and global), the block-cylic-distribution block size, 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
a | 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). |
error | integer, optional: returns an error code, which can be queried with elpa_strerr |
subroutine elpa_invert_trm_a_h_a_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
value | a_p, | ||
integer(kind=c_int), intent(in) | error ) |
subroutine elpa_invert_trm_d_ptr_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
type(c_ptr) | a, | ||
integer | error ) |
elpa_invert_trm_d_ptr_d: class method to invert a triangular
The dimensions of the matrix a (locally ditributed and global), the block-cylic-distribution block size, 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
a | Distributed matrix for which eigenvalues are to be computed as device pointer 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). |
error | integer, optional: returns an error code, which can be queried with elpa_strerr |
subroutine elpa_invert_trm_d_ptr_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
value | a_p, | ||
integer(kind=c_int), intent(in) | error ) |
subroutine elpa_solve_tridiagonal_ELPA_IMPL_SUFFIX | ( | class(elpa_impl_t) | self, |
real(kind=c_real_datatype), dimension(self%na) | d, | ||
real(kind=c_real_datatype), dimension(self%na) | e, | ||
real(kind=c_real_datatype), dimension(self%local_nrows,self%local_ncols) | q, | ||
integer | error ) |
elpa_solve_tridiagonal_d: class method to solve the eigenvalue problem for a tridiagonal matrix a
The dimensions of the matrix a (locally ditributed and global), the block-cylic-distribution block size, 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
d | array d on input diagonal elements of tridiagonal matrix, on output the eigenvalues in ascending order |
e | array e on input subdiagonal elements of matrix, on exit destroyed |
q | matrix on exit : contains the eigenvectors |
error | integer, optional: returns an error code, which can be queried with elpa_strerr |
subroutine elpa_solve_tridiagonal_ELPA_IMPL_SUFFIX_c | ( | value | handle, |
value | d_p, | ||
value | e_p, | ||
value | q_p, | ||
integer(kind=c_int), intent(in) | error ) |