## Developer Reference

• 0.10
• 10/21/2020
• Public Content
Contents

# cblas_?gemm

Computes a matrix-matrix product with general matrices.

## Syntax

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.
• ?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
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
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