Intel(R) Math Kernel Library for Deep Neural Networks (Intel(R) MKL-DNN)  0.21.0
Performance library for Deep Learning
Functions
BLAS functions

A subset of Basic Linear ALgebra (BLAS) functions to perform matrix-matrix multiplication. More...

Functions

mkldnn_status_t MKLDNN_API mkldnn_sgemm (const char *transa, const char *transb, const int *M, const int *N, const int *K, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
 SGEMM performs a matrix-matrix multiplication operation defined as. More...
 
mkldnn_status_t MKLDNN_API mkldnn_gemm_s8u8s32 (const char *transa, const char *transb, const char *offsetc, const int *M, const int *N, const int *K, const float *alpha, const int8_t *A, const int *lda, const int8_t *ao, const uint8_t *B, const int *ldb, const int8_t *bo, const float *beta, int32_t *c, const int *ldc, const int32_t *co)
 gemm_s8u8s32 and gemm_s8s8s32 perform a matrix-matrix multiplication operation and add the result to a scalar-matrix product. More...
 
mkldnn_status_t MKLDNN_API mkldnn_gemm_s8s8s32 (const char *transa, const char *transb, const char *offsetc, const int *M, const int *N, const int *K, const float *alpha, const int8_t *A, const int *lda, const int8_t *ao, const int8_t *B, const int *ldb, const int8_t *bo, const float *beta, int32_t *c, const int *ldc, const int32_t *co)
 
mkldnn_status_t MKLDNN_API mkldnn_gemm_bf16bf16f32 (const char *transa, const char *transb, const int *M, const int *N, const int *K, const float *alpha, const mkldnn_bfloat16_t *A, const int *lda, const mkldnn_bfloat16_t *B, const int *ldb, const float *beta, float *c, const int *ldc)
 gemm_bf16bf16f32 performs a matrix-matrix multiplication operation defined as More...
 

Detailed Description

A subset of Basic Linear ALgebra (BLAS) functions to perform matrix-matrix multiplication.

Function Documentation

◆ mkldnn_sgemm()

mkldnn_status_t MKLDNN_API mkldnn_sgemm ( const char *  transa,
const char *  transb,
const int *  M,
const int *  N,
const int *  K,
const float *  alpha,
const float *  A,
const int *  lda,
const float *  B,
const int *  ldb,
const float *  beta,
float *  C,
const int *  ldc 
)

SGEMM performs a matrix-matrix multiplication operation defined as.

C := alpha*op( A )*op( B ) + beta*C

where

  • op( X ) is one of op( X ) = X or op( X ) = X**T,
  • alpha and beta are scalars,
  • A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.

The matrices are assumed to be stored in column-major order (the elements in a matrix columns are contiguous in memory).

Note
The API is different from the standard BLAS routine because it returns mkldnn_status_t for error handling. XERBLA is not supported: no error message will be printed in case of incorrect parameters.

◆ mkldnn_gemm_s8u8s32()

mkldnn_status_t MKLDNN_API mkldnn_gemm_s8u8s32 ( const char *  transa,
const char *  transb,
const char *  offsetc,
const int *  M,
const int *  N,
const int *  K,
const float *  alpha,
const int8_t *  A,
const int *  lda,
const int8_t *  ao,
const uint8_t *  B,
const int *  ldb,
const int8_t *  bo,
const float *  beta,
int32_t *  c,
const int *  ldc,
const int32_t *  co 
)

gemm_s8u8s32 and gemm_s8s8s32 perform a matrix-matrix multiplication operation and add the result to a scalar-matrix product.

For the final result, a vector is added to each row or column of the output matrix. The operation is defined as:

C := alpha*(op(A) + A_offset) * (op(B) + B_offset) + beta*C + C_offset

where

  • op( X ) = X or op( X ) = X**T,
  • 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, size len:
    • if offsetc = F: len must be at least 1
    • if offsetc = C: len must be at least max(1, m)
    • if offsetc = R: len must be at least max(1, n)
  • alpha and beta are scalars, and A, B and C are matrices, with op( A ) an m-by-k matrix, op( B ) a k-by-n matrix and C an m-by-n matrix.

The matrices are assumed to be stored in column-major order (the elements in a matrix columns are contiguous in memory).

Note
The API is different compared with the standard BLAS routine because it returns mkldnn_status_t for error handling. XERBLA is not supported: no error message will be printed in case of incorrect parameters.

◆ mkldnn_gemm_s8s8s32()

mkldnn_status_t MKLDNN_API mkldnn_gemm_s8s8s32 ( const char *  transa,
const char *  transb,
const char *  offsetc,
const int *  M,
const int *  N,
const int *  K,
const float *  alpha,
const int8_t *  A,
const int *  lda,
const int8_t *  ao,
const int8_t *  B,
const int *  ldb,
const int8_t *  bo,
const float *  beta,
int32_t *  c,
const int *  ldc,
const int32_t *  co 
)

◆ mkldnn_gemm_bf16bf16f32()

mkldnn_status_t MKLDNN_API mkldnn_gemm_bf16bf16f32 ( const char *  transa,
const char *  transb,
const int *  M,
const int *  N,
const int *  K,
const float *  alpha,
const mkldnn_bfloat16_t A,
const int *  lda,
const mkldnn_bfloat16_t B,
const int *  ldb,
const float *  beta,
float *  c,
const int *  ldc 
)

gemm_bf16bf16f32 performs a matrix-matrix multiplication operation defined as

C := alpha*op( A )*op( B ) + beta*C

where

  • op( X ) is one of op( X ) = X or op( X ) = X**T,
  • alpha and beta are scalars,
  • A, B and C are matrices, with op( A ) an m by k matrix, op( B ) a k by n matrix and C an m by n matrix.

The matrices are assumed to be stored in column-major order (the elements in a matrix columns are contiguous in memory).

Note
The API is different from the standard BLAS routine because it returns mkldnn_status_t for error handling. XERBLA is not supported: no error message will be printed in case of incorrect parameters.