dbcsr_mm_multrec_type Derived Type

type, public :: dbcsr_mm_multrec_type

Used to carry data among the various calls. Each thread has its own private copy.


Components

Type Visibility Attributes Name Initial
logical, private :: c_has_symmetry = .FALSE.

The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering

logical, private :: keep_sparsity = .FALSE.

The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering

logical, private :: keep_product_data = .FALSE.

The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering

logical, private :: use_eps = .FALSE.

The product matrix has symmetry Sparsity of C matrix should be kept Use on-the-fly filtering

integer, private, DIMENSION(:), POINTER :: m_sizes => NULL()

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 => NULL()

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 => NULL()

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 => NULL()
integer, private, DIMENSION(:), POINTER :: n_global_sizes => NULL()
integer, private, DIMENSION(:), POINTER :: c_local_rows => NULL()

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 => NULL()

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 => NULL()

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 => NULL()

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 => NULL()

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 => NULL()

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 => NULL()

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 => NULL()

Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks.

real(kind=real_8), private :: eps = -1.0_real_8
integer, private :: original_lastblk = -1

Number of work matrix blocks before addition

integer(kind=int_8), private :: flop = -1_int_8

flop count

type(dbcsr_work_type), private, POINTER :: product_wm => Null()
type(dbcsr_mm_csr_type), private :: csr = dbcsr_mm_csr_type()
logical, private :: new_row_max_epss = .FALSE.
logical, private :: initialized = .FALSE.

Source Code

   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 = .FALSE., keep_sparsity = .FALSE., keep_product_data = .FALSE., use_eps = .FALSE.
         !! The product matrix has symmetry
         !! Sparsity of C matrix should be kept
         !! Use on-the-fly filtering
      INTEGER, DIMENSION(:), POINTER :: m_sizes => NULL(), n_sizes => NULL(), k_sizes => NULL()
         !! 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 => NULL(), n_global_sizes => NULL()
      INTEGER, DIMENSION(:), POINTER :: c_local_rows => NULL(), c_local_cols => NULL(), k_locals => NULL(), &
                                        c_global_rows => NULL(), c_global_cols => NULL()
         !! 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 => NULL(), a_norms => NULL(), b_norms => NULL()
         !! Maximum eps to be used for one row.
         !! Norms of A matrix blocks.
         !! Norms of B matrix blocks.
      REAL(KIND=real_8)     :: eps = -1.0_real_8
      INTEGER               :: original_lastblk = -1
         !! Number of work matrix blocks before addition
      INTEGER(kind=int_8)   :: flop = -1_int_8
         !! flop count
      TYPE(dbcsr_work_type), POINTER :: product_wm => Null()
      TYPE(dbcsr_mm_csr_type)        :: csr = dbcsr_mm_csr_type()
      LOGICAL                        :: new_row_max_epss = .FALSE.
      LOGICAL                        :: initialized = .FALSE.
   END TYPE dbcsr_mm_multrec_type