![]() |
(git:d18deda)
|
Auxiliary tools to redistribute cp_fm_type matrices before and after diagonalization. Heuristics are used to determine the optimal number of CPUs for diagonalization and the input matrices are redistributed if necessary. More...
Data Types | |
type | cp_fm_redistribute_info |
Functions/Subroutines | |
subroutine, public | cp_fm_redistribute_init (a, x, should_print, elpa_force_redistribute) |
Initializes the parameters that determine how to calculate the optimal number of CPUs for diagonalizing a matrix. The parameters are read from the GLOBAL input section. | |
subroutine, public | cp_fm_redistribute_start (matrix, eigenvectors, matrix_new, eigenvectors_new, caller_is_elpa, redist_info) |
Determines the optimal number of CPUs for matrix diagonalization and redistributes the input matrices if necessary. | |
subroutine, public | cp_fm_redistribute_end (matrix, eigenvectors, eig, matrix_new, eigenvectors_new) |
Redistributes eigenvectors and eigenvalues back to the original communicator group. | |
Auxiliary tools to redistribute cp_fm_type matrices before and after diagonalization. Heuristics are used to determine the optimal number of CPUs for diagonalization and the input matrices are redistributed if necessary.
subroutine, public cp_fm_diag_utils::cp_fm_redistribute_init | ( | integer, intent(in) | a, |
integer, intent(in) | x, | ||
logical, intent(in) | should_print, | ||
logical, intent(in) | elpa_force_redistribute | ||
) |
Initializes the parameters that determine how to calculate the optimal number of CPUs for diagonalizing a matrix. The parameters are read from the GLOBAL input section.
a | integer parameter used to define the rule for determining the optimal number of CPUs for diagonalization |
x | integer parameter used to define the rule for determining the optimal number of CPUs for diagonalization |
should_print | flag that determines if information about the redistribution process should be printed |
elpa_force_redistribute | flag that if redistribution should always be performed when the ELPA diagonalization library is in use |
Definition at line 147 of file cp_fm_diag_utils.F.
subroutine, public cp_fm_diag_utils::cp_fm_redistribute_start | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in) | eigenvectors, | ||
type(cp_fm_type), intent(out) | matrix_new, | ||
type(cp_fm_type), intent(out) | eigenvectors_new, | ||
logical, intent(in), optional | caller_is_elpa, | ||
type(cp_fm_redistribute_info), intent(out), optional | redist_info | ||
) |
Determines the optimal number of CPUs for matrix diagonalization and redistributes the input matrices if necessary.
matrix | the input cp_fm_type matrix to be diagonalized |
eigenvectors | the cp_fm_type matrix that will hold the eigenvectors of the input matrix |
matrix_new | the redistributed input matrix which will subsequently be diagonalized, or a pointer to the original matrix if no redistribution is required |
eigenvectors_new | the redistributed eigenvectors matrix, or a pointer to the original matrix if no redistribution is required |
caller_is_elpa | flag that determines if ELPA is used for diagonalization |
redist_info | get info about the redistribution |
Definition at line 262 of file cp_fm_diag_utils.F.
subroutine, public cp_fm_diag_utils::cp_fm_redistribute_end | ( | type(cp_fm_type), intent(in) | matrix, |
type(cp_fm_type), intent(in) | eigenvectors, | ||
real(kind=dp), dimension(:), intent(inout) | eig, | ||
type(cp_fm_type), intent(inout) | matrix_new, | ||
type(cp_fm_type), intent(inout) | eigenvectors_new | ||
) |
Redistributes eigenvectors and eigenvalues back to the original communicator group.
matrix | the input cp_fm_type matrix to be diagonalized |
eigenvectors | the cp_fm_type matrix that will hold the eigenvectors of the input matrix |
eig | global array holding the eigenvalues of the input matrixmatrix |
matrix_new | the redistributed input matrix which will subsequently be diagonalized, or a pointer to the original matrix if no redistribution is required |
eigenvectors_new | the redistributed eigenvectors matrix, or a pointer to the original matrix if no redistribution is required |
Definition at line 455 of file cp_fm_diag_utils.F.