Developer Reference

  • 0.9
  • 09/09/2020
  • Public Content
Contents

cblas_?gemm

Computes a matrix-matrix product with general matrices.

Syntax

void
cblas_sgemm
(
const
CBLAS_LAYOUT
Layout
,
const
CBLAS_TRANSPOSE
transa
,
const
CBLAS_TRANSPOSE
transb
,
const
MKL_INT
m
,
const
MKL_INT
n
,
const
MKL_INT
k
,
const
float
alpha
,
const
float
*a
,
const
MKL_INT
lda
,
const
float
*b
,
const
MKL_INT
ldb
,
const
float
beta
,
float
*c
,
const
MKL_INT
ldc
);
void
cblas_dgemm
(
const
CBLAS_LAYOUT
Layout
,
const
CBLAS_TRANSPOSE
transa
,
const
CBLAS_TRANSPOSE
transb
,
const
MKL_INT
m
,
const
MKL_INT
n
,
const
MKL_INT
k
,
const
double
alpha
,
const
double
*a
,
const
MKL_INT
lda
,
const
double
*b
,
const
MKL_INT
ldb
,
const
double
beta
,
double
*c
,
const
MKL_INT
ldc
);
void
cblas_cgemm
(
const
CBLAS_LAYOUT
Layout
,
const
CBLAS_TRANSPOSE
transa
,
const
CBLAS_TRANSPOSE
transb
,
const
MKL_INT
m
,
const
MKL_INT
n
,
const
MKL_INT
k
,
const
void
*alpha
,
const
void
*a
,
const
MKL_INT
lda
,
const
void
*b
,
const
MKL_INT
ldb
,
const
void
*beta
,
void
*c
,
const
MKL_INT
ldc
);
void
cblas_zgemm
(
const
CBLAS_LAYOUT
Layout
,
const
CBLAS_TRANSPOSE
transa
,
const
CBLAS_TRANSPOSE
transb
,
const
MKL_INT
m
,
const
MKL_INT
n
,
const
MKL_INT
k
,
const
void
*alpha
,
const
void
*a
,
const
MKL_INT
lda
,
const
void
*b
,
const
MKL_INT
ldb
,
const
void
*beta
,
void
*c
,
const
MKL_INT
ldc
);
Include Files
  • mkl.h
Description
The
?gemm
routines compute a scalar-matrix-matrix product and add the result to a scalar-matrix product, with general matrices. The operation is defined as
C := alpha*op(A)*op(B) + beta*C
where:
op(
X
)
is one of
op(
X
) =
X
, or
op(
X
) =
X
T
, or
op(
X
) =
X
H
,
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.
See also:
  • ?gemm
    for the Fortran language interface to this routine
  • ?gemm3m
    , BLAS-like extension routines, that use matrix multiplication for similar matrix-matrix operations
Input Parameters
Layout
Specifies whether two-dimensional array storage is row-major (
CblasRowMajor
) or column-major (
CblasColMajor
).
transa
Specifies the form of
op(
A
)
used in the matrix multiplication:
  • if
    transa
    =
    CblasNoTrans
    , then
    op(
    A
    ) =
    A
    ;
  • if
    transa
    =
    CblasTrans
    , then
    op(
    A
    ) =
    A
    T
    ;
  • if
    transa
    =
    CblasConjTrans
    , then
    op(
    A
    ) =
    A
    H
    .
transb
Specifies the form of
op(
B
)
used in the matrix multiplication:
  • if
    transb
    =
    CblasNoTrans
    , then
    op(
    B
    ) =
    B
    ;
  • if
    transb
    =
    CblasTrans
    , then
    op(
    B
    ) =
    B
    T
    ;
  • if
    transb
    =
    CblasConjTrans
    , then
    op(
    B
    ) =
    B
    H
    .
m
Specifies the number of rows of the matrix
op(
A
)
and of the matrix
C
. The value of
m
must be at least zero.
n
Specifies the number of columns of the matrix
op(
B
)
and the number of columns of the matrix
C
. The value of
n
must be at least zero.
k
Specifies the number of columns of the matrix
op(
A
)
and the number of rows of the matrix
op(
B
)
. The value of
k
must be at least zero.
alpha
Specifies the scalar
alpha
.
a
transa
=
CblasNoTrans
transa
=
CblasTrans
or
transa
=
CblasConjTrans
Layout
=
CblasColMajor
Array, size
lda
*
k
.
Before entry, the leading
m
-by-
k
part of the array
a
must contain the matrix
A
.
Array, size
lda
*
m
.
Before entry, the leading
k
-by-
m
part of the array
a
must contain the matrix
A
.
Layout
=
CblasRowMajor
Array, size
lda
*
m
.
Before entry, the leading
k
-by-
m
part of the array
a
must contain the matrix
A
.
Array, size
lda
*
k
.
Before entry, the leading
m
-by-
k
part of the array
a
must contain the matrix
A
.
lda
Specifies the leading dimension of
a
as declared in the calling (sub)program.
transa
=
CblasNoTrans
transa
=
CblasTrans
or
transa
=
CblasConjTrans
Layout
=
CblasColMajor
lda
must be at least
max(1,
m
)
.
lda
must be at least
max(1,
k
)
Layout
=
CblasRowMajor
lda
must be at least
max(1,
k
)
lda
must be at least
max(1,
m
)
.
b
transb
=
CblasNoTrans
transb
=
CblasTrans
or
transb
=
CblasConjTrans
Layout
=
CblasColMajor
Array, size
ldb
by
n
. Before entry, the leading
k
-by-
n
part of the array
b
must contain the matrix
B
.
Array, size
ldb
by
k
. Before entry the leading
n
-by-
k
part of the array
b
must contain the matrix
B
.
Layout
=
CblasRowMajor
Array, size
ldb
by
k
. Before entry the leading
n
-by-
k
part of the array
b
must contain the matrix
B
.
Array, size
ldb
by
n
. Before entry, the leading
k
-by-
n
part of the array
b
must contain the matrix
B
.
ldb
Specifies the leading dimension of
b
as declared in the calling (sub)program.
When
transb
=
CblasNoTrans
, then
ldb
must be at least
max(1,
k
)
, otherwise
ldb
must be at least
max(1,
n
)
.
transb
=
CblasNoTrans
transb
=
CblasTrans
or
transb
=
CblasConjTrans
Layout
=
CblasColMajor
ldb
must be at least
max(1,
k
)
.
ldb
must be at least
max(1,
n
)
.
Layout
=
CblasRowMajor
ldb
must be at least
max(1,
n
)
.
ldb
must be at least
max(1,
k
)
.
beta
Specifies the scalar
beta
. When
beta
is equal to zero, then
c
need not be set on input.
c
Layout
=
CblasColMajor
Array, size
ldc
by
n
. Before entry, the leading
m
-by-
n
part of the array
c
must contain the matrix
C
, except when
beta
is equal to zero, in which case
c
need not be set on entry.
Layout
=
CblasRowMajor
Array, size
ldc
by
m
. Before entry, the leading
n
-by-
m
part of the array
c
must contain the matrix
C
, except when
beta
is equal to zero, in which case
c
need not be set on entry.
ldc
Specifies the leading dimension of
c
as declared in the calling (sub)program.
Layout
=
CblasColMajor
ldc
must be at least
max(1,
m
)
.
Layout
=
CblasRowMajor
ldc
must be at least
max(1,
n
)
.
Output Parameters
c
Overwritten by the
m
-by-
n
matrix
(
alpha
*op(
A
)*op(
B
) +
beta
*
C
)
.

Example

For examples of
routine
usage, see these code examples in the
Intel® oneAPI Math Kernel Library
installation directory:
  • cblas_sgemm
    :
    examples\cblas\source\cblas_sgemmx.c
  • cblas_dgemm
    :
    examples\cblas\source\cblas_dgemmx.c
  • cblas_cgemm
    :
    examples\cblas\source\cblas_cgemmx.c
  • cblas_zgemm
    :
    examples\cblas\source\cblas_zgemmx.c