dbcsr_multiply Interface

public interface dbcsr_multiply

Contents


Module Procedures

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 dbcsr_multiply_s(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)

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: transb
real(kind=real_4), intent(in) :: alpha
type(dbcsr_type), intent(in) :: matrix_a
type(dbcsr_type), intent(in) :: matrix_b
real(kind=real_4), intent(in) :: beta
type(dbcsr_type), intent(inout) :: matrix_c
integer, intent(in), optional :: first_row
integer, intent(in), optional :: last_row
integer, intent(in), optional :: first_column
integer, intent(in), optional :: last_column
integer, intent(in), optional :: first_k
integer, intent(in), optional :: last_k
logical, intent(in), optional :: retain_sparsity
real(kind=real_8), intent(in), optional :: filter_eps
integer(kind=int_8), intent(out), optional :: flop

private subroutine dbcsr_multiply_d(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)

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: transb
real(kind=real_8), intent(in) :: alpha
type(dbcsr_type), intent(in) :: matrix_a
type(dbcsr_type), intent(in) :: matrix_b
real(kind=real_8), intent(in) :: beta
type(dbcsr_type), intent(inout) :: matrix_c
integer, intent(in), optional :: first_row
integer, intent(in), optional :: last_row
integer, intent(in), optional :: first_column
integer, intent(in), optional :: last_column
integer, intent(in), optional :: first_k
integer, intent(in), optional :: last_k
logical, intent(in), optional :: retain_sparsity
real(kind=real_8), intent(in), optional :: filter_eps
integer(kind=int_8), intent(out), optional :: flop

private subroutine dbcsr_multiply_c(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)

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: transb
complex(kind=real_4), intent(in) :: alpha
type(dbcsr_type), intent(in) :: matrix_a
type(dbcsr_type), intent(in) :: matrix_b
complex(kind=real_4), intent(in) :: beta
type(dbcsr_type), intent(inout) :: matrix_c
integer, intent(in), optional :: first_row
integer, intent(in), optional :: last_row
integer, intent(in), optional :: first_column
integer, intent(in), optional :: last_column
integer, intent(in), optional :: first_k
integer, intent(in), optional :: last_k
logical, intent(in), optional :: retain_sparsity
real(kind=real_8), intent(in), optional :: filter_eps
integer(kind=int_8), intent(out), optional :: flop

private subroutine dbcsr_multiply_z(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)

Arguments

TypeIntentOptionalAttributesName
character(len=1), intent(in) :: transa
character(len=1), intent(in) :: transb
complex(kind=real_8), intent(in) :: alpha
type(dbcsr_type), intent(in) :: matrix_a
type(dbcsr_type), intent(in) :: matrix_b
complex(kind=real_8), intent(in) :: beta
type(dbcsr_type), intent(inout) :: matrix_c
integer, intent(in), optional :: first_row
integer, intent(in), optional :: last_row
integer, intent(in), optional :: first_column
integer, intent(in), optional :: last_column
integer, intent(in), optional :: first_k
integer, intent(in), optional :: last_k
logical, intent(in), optional :: retain_sparsity
real(kind=real_8), intent(in), optional :: filter_eps
integer(kind=int_8), intent(out), optional :: flop