Used to carry data among the various calls. Each thread has its own private copy.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | private | :: | c_has_symmetry |
The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering |
|||
logical, | private | :: | keep_sparsity |
The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering |
|||
logical, | private | :: | keep_product_data |
The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering |
|||
logical, | private | :: | use_eps |
The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering |
|||
integer, | private, | DIMENSION(:), POINTER | :: | m_sizes |
Block sizes of A and C matrix rows, indexed locally Block sizes of B and C matrix columns, indexed locally Block sizes of A matrix columns and B matrix rows, indexed locally |
||
integer, | private, | DIMENSION(:), POINTER | :: | n_sizes |
Block sizes of A and C matrix rows, indexed locally Block sizes of B and C matrix columns, indexed locally Block sizes of A matrix columns and B matrix rows, indexed locally |
||
integer, | private, | DIMENSION(:), POINTER | :: | k_sizes |
Block sizes of A and C matrix rows, indexed locally Block sizes of B and C matrix columns, indexed locally Block sizes of A matrix columns and B matrix rows, indexed locally |
||
integer, | private, | DIMENSION(:), POINTER | :: | m_global_sizes | |||
integer, | private, | DIMENSION(:), POINTER | :: | n_global_sizes | |||
integer, | private, | DIMENSION(:), POINTER | :: | c_local_rows |
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). |
||
integer, | private, | DIMENSION(:), POINTER | :: | c_local_cols |
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). |
||
integer, | private, | DIMENSION(:), POINTER | :: | k_locals |
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). |
||
integer, | private, | DIMENSION(:), POINTER | :: | c_global_rows |
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). |
||
integer, | private, | DIMENSION(:), POINTER | :: | c_global_cols |
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). |
||
real(kind=sp), | private, | DIMENSION(:), POINTER | :: | row_max_epss |
Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks. |
||
real(kind=sp), | private, | DIMENSION(:), POINTER | :: | a_norms |
Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks. |
||
real(kind=sp), | private, | DIMENSION(:), POINTER | :: | b_norms |
Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks. |
||
real(kind=real_8), | private | :: | eps | ||||
integer, | private | :: | original_lastblk |
Number of work matrix blocks before addition |
|||
integer(kind=int_8), | private | :: | flop |
flop count |
|||
type(dbcsr_work_type), | private, | POINTER | :: | product_wm | => | Null() | |
type(dbcsr_mm_csr_type), | private | :: | csr | ||||
logical, | private | :: | new_row_max_epss | = | .FALSE. | ||
logical, | private | :: | initialized | = | .FALSE. |
TYPE dbcsr_mm_multrec_type
!! Used to carry data among the various calls. Each thread has
!! its own private copy.
PRIVATE
LOGICAL :: c_has_symmetry, keep_sparsity, keep_product_data, use_eps
!! The product matrix has symmetry
!! Sparsity of C matrix should be kept
!! Use on-the-fly filtering
INTEGER, DIMENSION(:), POINTER :: m_sizes, n_sizes, k_sizes
!! Block sizes of A and C matrix rows, indexed locally
!! Block sizes of B and C matrix columns, indexed locally
!! Block sizes of A matrix columns and B matrix rows, indexed locally
INTEGER, DIMENSION(:), POINTER :: m_global_sizes, n_global_sizes
INTEGER, DIMENSION(:), POINTER :: c_local_rows, c_local_cols, k_locals, &
c_global_rows, c_global_cols
!! C and A matrix local rows. Map from local row (index) to global row (value).
!! C and B matrix local columns. Map from local column (index) to global column (value).
!! A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value).
!! C and A matrix global rows. Map from global rows (index) to local rows (value).
!! C and B matrix global columns. Map from global columns (index) to local columns (value).
REAL(KIND=sp), DIMENSION(:), POINTER :: row_max_epss, a_norms, b_norms
!! Maximum eps to be used for one row.
!! Norms of A matrix blocks.
!! Norms of B matrix blocks.
REAL(KIND=real_8) :: eps
INTEGER :: original_lastblk
!! Number of work matrix blocks before addition
INTEGER(kind=int_8) :: flop
!! flop count
TYPE(dbcsr_work_type), POINTER :: product_wm => Null()
TYPE(dbcsr_mm_csr_type) :: csr
LOGICAL :: new_row_max_epss = .FALSE.
LOGICAL :: initialized = .FALSE.
END TYPE dbcsr_mm_multrec_type