Developer Reference

  • 098
  • 03/30/2020
  • Public Content
Contents

gemm_*_compute

Computes a matrix-matrix product with general integer matrices (where one or both input matrices are stored in a packed data structure) and adds the result to a scalar-matrix product.

Syntax

call gemm_s8u8s32_compute
(
transa
,
transb
,
offsetc
,
m
,
n
,
k
,
alpha
,
a
,
lda
,
oa
,
b
,
ldb
,
ob
,
beta
,
c
,
ldc
,
oc
)
call gemm_s16s16s32_compute
(
transa
,
transb
,
offsetc
,
m
,
n
,
k
,
alpha
,
a
,
lda
,
oa
,
b
,
ldb
,
ob
,
beta
,
c
,
ldc
,
oc
)
Include Files
  • mkl.fi
Description
The
gemm_*_compute
routine is one of a set of related routines that enable use of an internal packed storage. After calling
gemm_*_pack
call
gemm_*_compute
to compute
C
:=
alpha
*(op(
A
) +
A_offset
)*(op(
B
) +
B_offset
) +
beta
*
C
+
C_offset
,
where:

    op(
    X
    )
    is either
    op(
    X
    ) =
    X
    or
    op(
    X
    ) =
    X
    T

    alpha
    and
    beta
    are scalars

    A
    ,
    B
    , and
    C
    are matrices:

    op(
    A
    )
    is an
    m
    -by-
    k
    matrix,

    op(
    B
    )
    is a
    k
    -by-
    n
    matrix,

    C
    is an
    m
    -by-
    n
    matrix.

    A_offset
    is an
    m
    -by-
    k
    matrix with every element equal to the value
    oa
    .

    B_offset
    is an
    k
    -by-
    n
    matrix with every element equal to the value
    ob
    .

    C_offset
    is an
    m
    -by-
    n
    matrix defined by the
    oc
    array as described in the description of the
    offsetc
    parameter.

For best performance, use the same number of threads for packing and for computing.
If you are packing for both
A
and
B
matrices, you must use the same number of threads for packing
A
as for packing
B
.
Input Parameters
transa
CHARACTER*1
.
Specifies the form of
op(
A
)
used in the packing:
If
transa
=
'N'
or
'n'
 
op(
A
) =
A
.
If
transa
=
'T'
or
't'
 
op(
A
) =
A
T
.
If
transa
=
'P'
or
'p'
the matrix in array
a
is packed into a format internal to
Intel® MKL
and
lda
is ignored.
transb
CHARACTER*1
.
Specifies the form of
op(
B
)
used in the packing:
If
transb
=
'N'
or
'n'
 
op(
B
) =
B
.
If
transb
=
'T'
or
't'
op(
B
) =
B
T
.
If
transb
=
'P'
or
'p'
the matrix in array
b
is packed into a format internal to
Intel® MKL
and
ldb
is ignored.
offsetc
CHARACTER*1