Developer Reference for Intel® oneAPI Math Kernel Library for C
?gemv_batch
Computes groups of matrix-vector product with general matrices.
Syntax
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);
Include Files
mkl.h
Description
The ?gemv_batchcblas_?gemv_batch routines perform a series of matrix-vector product added to a scaled vector. They are similar to the ?gemvcblas_?gemv routine counterparts, but the ?gemv_batchcblas_?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.
Input Parameters
- layout
-
Specifies whether two-dimensional array storage is row-major (CblasRowMajor) or column-major (CblasColMajor).
trans_array
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’).
m_array
Array of size group_count . For the group i , mi = m_array [i] is the number of rows of the matrix A .
n_array
Array of size group_count . For the group i , ni = n_array [i] is the number of columns in the matrix A .
- alpha_array
-
REAL for sgemv_batch DOUBLE PRECISION for dgemv_batch COMPLEX for cgemv_batch DOUBLE COMPLEX for zgemv_batch Array of size group_count . For the group i , alphai = alpha_array [i] is the scalar alpha .
- a_array
-
INTEGER*8 for Intel® 64 architecture 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.
lda_array
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 mi if column major layout is used or at least ni if row major layout is used. .
- x_array
-
INTEGER*8 for Intel® 64 architecture 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.
incx_array
Array of size group_count . For the group i , incxi = incx_array [i] is the stride of vector x . Must not be zero.
- beta_array
-
REAL for sgemv_batch DOUBLE PRECISION for dgemv_batch COMPLEX for cgemv_batch DOUBLE COMPLEX for zgemv_batch Array of size group_count . For the group i , betai = beta_array [i] is the scalar beta .
- y_array
-
INTEGER*8 for Intel® 64 architecture 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.
- incy_array
-
INTEGER . Array of size group_count . For the group i , incyi = incy_array [i] is the stride of vector y . Must not be zero.
- group_count
-
INTEGER . Number of groups. Must be at least 0.
- group_size
-
INTEGER . 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.
Output Parameters
- y_array
-
Array of pointers holding the total_batch_count updated vector y .