Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 10/31/2024
Public
Document Table of Contents

cblas_?copy_batch

Computes a group of vector copies.

void cblas_scopy_batch (const MKL_INT *n_array, const float **x_array, const MKL_INT *incx_array, float **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size_array);

void cblas_dcopy_batch (const MKL_INT *n_array, const double **x_array, const MKL_INT *incx_array, double **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size_array);

void cblas_ccopy_batch (const MKL_INT *n_array, const void **x_array, const MKL_INT *incx_array, void **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size_array);

void cblas_zcopy_batch (const MKL_INT *n_array, const void **x_array, const MKL_INT *incx_array, void **y_array, const MKL_INT *incy_array, const MKL_INT group_count, const MKL_INT *group_size_array);

Description

The cblas_?copy_batch routines perform a series of vector copies. They are similar to their cblas_?copy routine counterparts, but the cblas_?copy_batch routines perform vector operations with a group of vectors. Each groups contains vectors with the same parameters (size and increment), while those parameters may vary between groups.

The operation is defined as follows:

idx = 0
for i = 0 … group_count – 1
    n, incx, incy and group_size at position i in n_array, alpha_array, incx_array, incy_array and group_size_array
    for j = 0 … group_size – 1
        x and y are vectors of size n at position idx in x_array and y_array
        y := x
        idx := idx + 1
    end for
end for

The number of entries in x_array and y_array is total_batch_count, which is the sum of all the group_size entries.

Input Parameters

n_array
Array of size group_count. For the group i, n_i = n_array[i] is the number of elements in the vectors x and y.
x_array
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 + (n_i - 1)*abs(incx_i)).
incx_array
Array of size group_count. For the group i, incx_i = incx_array[i] is the increment (or stride) between two consecutive elements of the vector x.
y_array
Array of size total_batch_count of pointers used to store the output vectors y. The array allocated for the y vectors of the group i must be of size at least (1 + (n_i - 1)*abs(incy_i)).
incy_array
Array of size group_count. For the group i, incy_i = incy_array[i] is the increment (or stride) between two consecutive elements of the vector y.
group_count
Number of groups. Must be at least 0.
group_size_array
Array of size group_count. The element group_size_array[i] is the number of vectors in the group i. Each element in group_size_array must be at least 0.

Output Parameters

y_array
Array of pointers holding the total_batch_count copied vectors y.