dbcsr_mm Module

Entry point of the dbcsr matrix-matrix multiplication. Modification history: - 2016-08 Code organization (Alfio Lazzaro).



Contents


Variables

TypeVisibilityAttributesNameInitial
character(len=*), private, parameter:: moduleN ='dbcsr_mm'
logical, private, parameter:: debug_mod =.FALSE.
logical, private, parameter:: careful_mod =.FALSE.
real, private, SAVE:: marketing_flops =0

Subroutines

public subroutine dbcsr_multiply_lib_init()

Initialize the library

Arguments

None

public subroutine dbcsr_multiply_lib_finalize()

Finalize the library

Arguments

None

public subroutine dbcsr_multiply_print_statistics(group, output_unit)

Print statistics

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: group
integer, intent(in) :: output_unit

public subroutine dbcsr_multiply_clear_mempools()

Deallocate memory contained in mempools

Arguments

None

public subroutine dbcsr_multiply_generic(transa, transb, alpha, matrix_a, matrix_b, beta, matrix_c, first_row, last_row, first_column, last_column, first_k, last_k, retain_sparsity, filter_eps, flop)

Performs a multiplication of two dbcsr_type matrices, as C := alpha * op( A ) * op( B ) + beta * C.

Read more…

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: transa

specifies the form of op( A ) to be used in the matrix multiplication transa = 'N' or 'n', op( A ) = A. transa = 'T' or 't', op( A ) = transpose(A). transa = 'C' or 'c', op( A ) = transpose(conjg(A)). specifies the form of op( B ) to be used in the matrix multiplication transb = 'N' or 'n', op( B ) = B. transb = 'T' or 't', op( B ) = transpose(B). transb = 'C' or 'c', op( B ) = transpose(conjg(B)).

character(len=1), intent(in) :: transb

specifies the form of op( A ) to be used in the matrix multiplication transa = 'N' or 'n', op( A ) = A. transa = 'T' or 't', op( A ) = transpose(A). transa = 'C' or 'c', op( A ) = transpose(conjg(A)). specifies the form of op( B ) to be used in the matrix multiplication transb = 'N' or 'n', op( B ) = B. transb = 'T' or 't', op( B ) = transpose(B). transb = 'C' or 'c', op( B ) = transpose(conjg(B)).

type(dbcsr_scalar_type), intent(in) :: alpha

scaling of product

type(dbcsr_type), intent(in) :: matrix_a

left BCSR matrix right BCSR matrix

type(dbcsr_type), intent(in) :: matrix_b

left BCSR matrix right BCSR matrix

type(dbcsr_scalar_type), intent(in) :: beta

scaling of existing data

type(dbcsr_type), intent(inout) :: matrix_c

resulting BCSR product matrix.

integer, intent(in), optional :: first_row

first full row of limiting submatrix last full row of limiting submatrix first full column of limiting submatrix last full column of limiting submatrix first full column of limiting inner product last full column of limiting inner product

integer, intent(in), optional :: last_row

first full row of limiting submatrix last full row of limiting submatrix first full column of limiting submatrix last full column of limiting submatrix first full column of limiting inner product last full column of limiting inner product

integer, intent(in), optional :: first_column

first full row of limiting submatrix last full row of limiting submatrix first full column of limiting submatrix last full column of limiting submatrix first full column of limiting inner product last full column of limiting inner product

integer, intent(in), optional :: last_column

first full row of limiting submatrix last full row of limiting submatrix first full column of limiting submatrix last full column of limiting submatrix first full column of limiting inner product last full column of limiting inner product

integer, intent(in), optional :: first_k

first full row of limiting submatrix last full row of limiting submatrix first full column of limiting submatrix last full column of limiting submatrix first full column of limiting inner product last full column of limiting inner product

integer, intent(in), optional :: last_k

first full row of limiting submatrix last full row of limiting submatrix first full column of limiting submatrix last full column of limiting submatrix first full column of limiting inner product last full column of limiting inner product

logical, intent(in), optional :: retain_sparsity

enforce the sparsity pattern of the existing product matrix; default is no

real(kind=real_8), intent(in), optional :: filter_eps

Filtering of the matrix

integer(kind=int_8), intent(out), optional :: flop

effective flop

private subroutine check_openmpi_rma()

Arguments

None