(git:c5411e0)
|
Public Member Functions | |
subroutine | cp_fm_trace_a0b0t0 (matrix_a, matrix_b, trace) |
returns the trace of matrix_a^T matrix_b, i.e sum_{i,j}(matrix_a(i,j)*matrix_b(i,j)) | |
subroutine | cp_fm_trace_a1b0t1_a (matrix_a, matrix_b, trace) |
Compute trace(k) = Tr (matrix_a(k)^T matrix_b) for each pair of matrices A_k and B. | |
subroutine | cp_fm_trace_a1b0t1_p (matrix_a, matrix_b, trace) |
subroutine | cp_fm_trace_a1b1t1_aa (matrix_a, matrix_b, trace, accurate) |
Compute trace(k) = Tr (matrix_a(k)^T matrix_b(k)) for each pair of matrices A_k and B_k. | |
subroutine | cp_fm_trace_a1b1t1_ap (matrix_a, matrix_b, trace, accurate) |
subroutine | cp_fm_trace_a1b1t1_pa (matrix_a, matrix_b, trace, accurate) |
subroutine | cp_fm_trace_a1b1t1_pp (matrix_a, matrix_b, trace, accurate) |
Definition at line 74 of file cp_fm_basic_linalg.F.
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a0b0t0 | ( | type(cp_fm_type), intent(in) | matrix_a, |
type(cp_fm_type), intent(in) | matrix_b, | ||
real(kind=dp), intent(out) | trace | ||
) |
returns the trace of matrix_a^T matrix_b, i.e sum_{i,j}(matrix_a(i,j)*matrix_b(i,j))
matrix_a | a matrix |
matrix_b | another matrix |
trace | ... |
Definition at line 777 of file cp_fm_basic_linalg.F.
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a1b0t1_a | ( | type(cp_fm_type), dimension(:), intent(in) | matrix_a, |
type(cp_fm_type), intent(in) | matrix_b, | ||
real(kind=dp), dimension(:), intent(out) | trace | ||
) |
Compute trace(k) = Tr (matrix_a(k)^T matrix_b) for each pair of matrices A_k and B.
matrix_a | list of A matrices |
matrix_b | B matrix |
trace | computed traces |
Computing the trace requires collective communication between involved MPI processes that implies a synchronisation point between them. The aim of this subroutine is to reduce the amount of time wasted in such synchronisation by performing one large collective operation which involves all the matrices in question.
The subroutine's suffix reflects dimensionality of dummy arrays; 'a1b0t1' means that the dummy variables 'matrix_a' and 'trace' are 1-dimensional arrays, while the variable 'matrix_b' is a single matrix.
Definition at line 850 of file cp_fm_basic_linalg.F.
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a1b0t1_p | ( | type(cp_fm_p_type), dimension(:), intent(in) | matrix_a, |
type(cp_fm_type), intent(in) | matrix_b, | ||
real(kind=dp), dimension(:), intent(out) | trace | ||
) |
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a1b1t1_aa | ( | type(cp_fm_type), dimension(:), intent(in) | matrix_a, |
type(cp_fm_type), dimension(:), intent(in) | matrix_b, | ||
real(kind=dp), dimension(:), intent(out) | trace, | ||
logical, intent(in), optional | accurate | ||
) |
Compute trace(k) = Tr (matrix_a(k)^T matrix_b(k)) for each pair of matrices A_k and B_k.
matrix_a | list of A matrices |
matrix_b | list of B matrices |
trace | computed traces |
accurate | ... |
Computing the trace requires collective communication between involved MPI processes that implies a synchronisation point between them. The aim of this subroutine is to reduce the amount of time wasted in such synchronisation by performing one large collective operation which involves all the matrices in question.
The subroutine's suffix reflects dimensionality of dummy arrays; 'a1b1t1' means that all dummy variables (matrix_a, matrix_b, and trace) are 1-dimensional arrays.
Definition at line 979 of file cp_fm_basic_linalg.F.
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a1b1t1_ap | ( | type(cp_fm_type), dimension(:), intent(in) | matrix_a, |
type(cp_fm_p_type), dimension(:), intent(in) | matrix_b, | ||
real(kind=dp), dimension(:), intent(out) | trace, | ||
logical, intent(in), optional | accurate | ||
) |
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a1b1t1_pa | ( | type(cp_fm_p_type), dimension(:), intent(in) | matrix_a, |
type(cp_fm_type), dimension(:), intent(in) | matrix_b, | ||
real(kind=dp), dimension(:), intent(out) | trace, | ||
logical, intent(in), optional | accurate | ||
) |
subroutine cp_fm_basic_linalg::cp_fm_trace::cp_fm_trace_a1b1t1_pp | ( | type(cp_fm_p_type), dimension(:), intent(in) | matrix_a, |
type(cp_fm_p_type), dimension(:), intent(in) | matrix_b, | ||
real(kind=dp), dimension(:), intent(out) | trace, | ||
logical, intent(in), optional | accurate | ||
) |