Intel® oneAPI Math Kernel Library Developer Reference - C
Computes groups of matrix-vector product with general matrices.
void cblas_sgemv_batch (const CBLAS_LAYOUT layout, const CBLAS_TRANSPOSE *trans_array, const MKL_INT *m_array, const MKL_INT *n_array, const float *alpha_array, const float **a_array, const MKL_INT *lda_array, const float **x_array, const MKL_INT *incx_array, const float *beta_array, float **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size);
void cblas_dgemv_batch (const CBLAS_LAYOUT layout, const CBLAS_TRANSPOSE *trans_array, const MKL_INT *m_array, const MKL_INT *n_array, const double *alpha_array, const double **a_array, const MKL_INT *lda_array, const double **x_array, const MKL_INT *incx_array, const double *beta_array, double **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size);
void cblas_cgemv_batch (const CBLAS_LAYOUT layout, const CBLAS_TRANSPOSE *trans_array, const MKL_INT *m_array, const MKL_INT *n_array, const void *alpha_array, const void **a_array, const MKL_INT *lda_array, const void **x_array, const MKL_INT *incx_array, const void *beta_array, void **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size);
void cblas_zgemv_batch (const CBLAS_LAYOUT layout, const CBLAS_TRANSPOSE *trans_array, const MKL_INT *m_array, const MKL_INT *n_array, const void *alpha_array, const void **a_array, const MKL_INT *lda_array, const void **x_array, const MKL_INT *incx_array, const void *beta_array, void **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size);
The cblas_?gemv_batch routines perform a series of matrix-vector product added to a scaled vector. They are similar to the cblas_?gemv routine counterparts, but the cblas_?gemv_batch routines perform matrix-vector operations with groups 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 trans, m, n, alpha, lda, incx, beta, incy and group_size at position i in trans_array, m_array, n_array, alpha_array, lda_array, incx_array, beta_array, incy_array and group_size_array for j = 0 … group_size – 1 a is a matrix of size mxn at position idx in a_array x and y are vectors of size m or n depending on trans, at position idx in x_array and y_array y := alpha * op(a) * x + beta * y idx := idx + 1 end for end for
The number of entries in a_array, x_array, and y_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, transi = trans_array[i] specifies the transposition operation applied to A.
if trans = CblasNoTrans, then op(A) = A;
if trans = CblasTrans, then op(A) = A';
if trans = CblasConjTrans, then op(A) = conjg(A').
Array of size group_count. For the group i, mi = m_array[i] is the number of rows of the matrix A.
Array of size group_count. For the group i, ni = n_array[i] is the number of columns in the matrix A.
Array of size group_count. For the group i, alphai = alpha_array[i] is the scalar alpha.
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 * ni if 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 A matrix is not transposed 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 group_count. For the group i, betai = beta_array[i] is the scalar beta.
Array of size total_batch_count of pointers used to store y vectors. The array allocated for the y vectors of the group i must be of size at least (1 + leni – 1)*abs(incyi)) where leni is mi if the A matrix is not transposed or ni otherwise.
Array of size group_count. For the group i, incyi = incy_array[i] is the stride of vector y.
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_count must be at least 0.