Intel® oneAPI Math Kernel Library Developer Reference - Fortran
Computes a matrix-matrix product with general matrices where one or both input matrices are stored in a packed data structure and adds the result to a scalar-matrix product.
call sgemm_compute (transa, transb, m, n, k, a, lda, b, ldb, beta, C, ldc)
call dgemm_compute (transa, transb, m, n, k, a, lda, b, ldb, beta, C, ldc)
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 := op(A)*op(B) + beta*C,
where:
For best performance, use the same number of threads for packing and for computing.
If packing for both A and B matrices, you must use the same number of threads for packing A as for packing B.
CHARACTER*1. Specifies the form of op(A) used in the matrix multiplication:
If transa = 'N' or 'n' op(A) = A.
If transa = 'T' or 't' op(A) = AT.
If transa = 'C' or 'c' op(A) = AH.
If transa = 'P' or 'p' the matrix in array a is packed and lda is ignored.
CHARACTER*1. Specifies the form of op(B) used in the matrix multiplication:
If transb = 'N' or 'n' op(B) = B.
If transb = 'T' or 't' op(B) = BT.
If transb = 'C' or 'c' op(B) = BH.
If transb = 'P' or 'p' the matrix in array b is packed and ldb is ignored.
INTEGER. Specifies the number of rows of the matrix op(A) and of the matrix C. The value of m must be at least zero.
INTEGER. 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.
INTEGER. 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.
REAL for sgemm_compute
DOUBLE PRECISION for dgemm_compute
Array:
transa = 'N' or 'n' |
transa = 'T', 't', 'C', or 'c' |
transa = 'P' or 'p' |
Size lda*k. Before entry, the leading m-by-k part of the array a must contain the matrix A. |
Size lda*m. Before entry, the leading k-by-m part of the array a must contain the matrix A. |
Stored in internal packed format. |
INTEGER. Specifies the leading dimension of a as declared in the calling (sub)program.
If transa = 'N' or 'n', lda must be at least max (1, m).
If transa = 'T', 't', 'C', or 'c', lda must be at least max (1, k).
If transa = 'P' or 'p', lda is ignored.
REAL for sgemm_compute
DOUBLE PRECISION for dgemm_compute
Array:
transb = 'N' or 'n' |
transb = 'T', 't', 'C', or 'c' |
transb = 'P' or 'p' |
Size ldb*n. Before entry, the leading k-by-n part of the array b must contain the matrix B. |
Size ldb*k. Before entry, the leading n-by-k part of the array b must contain the matrix B. |
Stored in internal packed format. |
INTEGER. Specifies the leading dimension of b as declared in the calling (sub)program.
If transb = 'N' or 'n', ldb must be at least max (1, k).
If transb = 'T', 't', 'C', or 'c', ldb must be at least max (1, n).
If transb = 'P' or 'p', ldb is ignored.
REAL for sgemm_compute
DOUBLE PRECISION for dgemm_compute
Specifies the scalar beta. When beta is equal to zero, then c need not be set on input.
REAL for sgemm_compute
DOUBLE PRECISION for dgemm_compute
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.
INTEGER. Specifies the leading dimension of c as declared in the calling (sub)program.
The value of ldc must be at least max (1, m).
c |
Overwritten by the m-by-n matrix op(A)*op(B) + beta*C. |