Intel® oneAPI Math Kernel Library Developer Reference - C
Computes groups of matrix-vector product using general matrices.
void cblas_sdgmm_batch (const CBLAS_LAYOUT layout, const CBLAS_SIDE *left_right_array, const MKL_INT *m_array, const MKL_INT *n_array, const float **a_array, const MKL_INT *lda_array, const float **x_array, const MKL_INT *incx_array, float **c_array, const MKL_INT *ldc_array, const MKL_INT group_count, const MKL_INT *group_size);
void cblas_ddgmm_batch (const CBLAS_LAYOUT layout, const CBLAS_SIDE *left_right_array, const MKL_INT *m_array, const MKL_INT *n_array, const double **a_array, const MKL_INT *lda_array, const double **x_array, const MKL_INT *incx_array, double **c_array, const MKL_INT *ldc_array, const MKL_INT group_count, const MKL_INT *group_size);
void cblas_cdgmm_batch (const CBLAS_LAYOUT layout, const CBLAS_SIDE *left_right_array, const MKL_INT *m_array, const MKL_INT *n_array, const void **a_array, const MKL_INT *lda_array, const void **x_array, const MKL_INT *incx_array, void **c_array, const MKL_INT *ldc_array, const MKL_INT group_count, const MKL_INT *group_size);
void cblas_zdgmm_batch (const CBLAS_LAYOUT layout, const CBLAS_SIDE *left_right_array, const MKL_INT *m_array, const MKL_INT *n_array, const void **a_array, const MKL_INT *lda_array, const void **x_array, const MKL_INT *incx_array, void **c_array, const MKL_INT *ldc_array, const MKL_INT group_count, const MKL_INT *group_size);
The cblas_?dgmm_batch routines perform a series of diagonal matrix-matrix product. The diagonal matrices are stored as dense vectors and the operations are performed with group of matrices and vectors. .
Each group contains matrices and vectors with the same parameters (size, increments). The operation is defined as:
idx = 0 For i = 0 … group_count – 1 left_right, m, n, lda, incx, ldc and group_size at position i in left_right_array, m_array, n_array, lda_array, incx_array, ldc_array and group_size_array for j = 0 … group_size – 1 a and c are matrices of size mxn at position idx in a_array and c_array x is a vector of size m or n depending on left_right, at position idx in x_array if (left_right == oneapi::mkl::side::left) c := diag(x) * a else c := a * diag(x) idx := idx + 1 end for end for
The number of entries in a_array, x_array, and c_array is total_batch_count = the sum of all of the group_size entries.
Specifies whether two-dimensional array storage is row-major (CblasRowMajor) or column-major (CblasColMajor).
Array of size group_count. For the group i, left_righti = left_right_array[i] specifies the position of the diagonal matrix in the matrix product.
if left_righti = CblasLeft, then C = diag(X) * A.
if left_righti = CblasRight, then C = A * diag(X).
Array of size group_count. For the group i, mi = m_array[i] is the number of rows of the matrix A and C.
Array of size group_count. For the group i, ni = n_array[i] is the number of columns in the matrix A and C.
Array of size total_batch_count of pointers used to store A matrices. The array allocated for the A matrices of the group i must be of size at least ldai * niif column major layout is used or at least ldai * mi is row major layout is used.
Array of size group_count. For the group i, ldai = lda_array[i] is the leading dimension of the matrix A. It must be positive and at least miif column major layout is used or at least ni if row major layout is used..
Array of size total_batch_count of pointers used to store x vectors. The array allocated for the x vectors of the group i must be of size at least (1 + leni – 1)*abs(incxi)) where leni is ni if the diagonal matrix is on the right of the product or mi otherwise.
Array of size group_count. For the group i, incxi = incx_array[i] is the stride of vector x.
Array of size total_batch_count of pointers used to store C matrices. The array allocated for the C matrices of the group i must be of size at least ldci * ni, if column major layout is used or at least ldci * mi if row major layout is used.
Array of size group_count. For the group i, ldci = ldc_array[i] is the leading dimension of the matrix C. It must be positive and at least miif column major layout is used or at least ni if row major layout is used..
Number of groups. Must be at least 0.
Array of size group_count. The element group_count[i] is the number of operations in the group i. Each element in group_size must be at least 0.