Developer Reference for Intel® oneAPI Math Kernel Library for Fortran

ID 766686
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?axpy_batch

Computes a group of vector-scalar products added to a vector.

Syntax

call saxpy_batch(n_array, alpha_array, x_array, incx_array, y_array, incy_array, group_count, group_size_array)

call daxpy_batch(n_array, alpha_array, x_array, incx_array, y_array, incy_array, group_count, group_size_array)

call caxpy_batch(n_array, alpha_array, x_array, incx_array, y_array, incy_array, group_count, group_size_array)

call zaxpy_batch(n_array, alpha_array, x_array, incx_array, y_array, incy_array, group_count, group_size_array)

Description

The ?axpy_batch routines perform a series of scalar-vector product added to a vector. They are similar to the ?axpy routine counterparts, but the ?axpy_batch routines perform vector operations with a group of vectors. The groups contain vectors with the same parameters.

The operation is defined as

idx = 0
for i = 0 … group_count – 1
    n, alpha, 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 := alpha * x + y
        idx := idx + 1
    end for
end for

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

Input Parameters

n_array

INTEGER. Array of size group_count. For the group i, ni = n_array[i] is the number of elements in vectors x and y.

alpha_array

REAL for saxpy_batch

DOUBLE PRECISION for daxpy_batch

COMPLEX for caxpy_batch

DOUBLE COMPLEX for zaxpy_batch

Array of size group_count. For the group i, alphai = alpha_array[i] is the scalar alpha.

x_array

INTEGER*8 for Intel® 64 architecture

INTEGER*4 for IA-32 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 + (ni – 1)*abs(incxi)).

incx_array

INTEGER. Array of size group_count. For the group i, incxi = incx_array[i] is the stride of vector x.

y_array

INTEGER*8 for Intel® 64 architecture

INTEGER*4 for IA-32 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 + (ni – 1)*abs(incyi)).

incy_array

INTEGER. Array of size group_count. For the group i, incyi = incy_array[i] is the stride of vector y.

group_count

INTEGER. Number of groups. Must be at least 0.

group_size_array

INTEGER. Array of size group_count. The element group_size_array[i] is the number of vector 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 updated vector y.