axpby#

Computes a vector-scalar product added to a scaled-vector.

Description#

The axpby routines compute two scalar-vector products and add them:

\[y \leftarrow beta * y + alpha * x\]

where:

  • x and y are vectors of n elements

  • alpha and beta are scalars

axpby supports the following precisions:

T

float

double

std::complex<float>

std::complex<double>

axpby (Buffer Version)#

Syntax#

namespace oneapi::mkl::blas::column_major {
  void axpby(sycl::queue &queue,
             std::int64_t n,
             T alpha,
             sycl::buffer<T,1> &x,
             std::int64_t incx,
             T beta,
             sycl::buffer<T,1> &y,
             std::int64_t incy);
  }
namespace oneapi::mkl::blas::row_major {
  void axpby(sycl::queue &queue,
             std::int64_t n,
             T alpha,
             sycl::buffer<T,1> &x,
             std::int64_t incx,
             T beta,
             sycl::buffer<T,1> &y,
             std::int64_t incy);
  }

Input Parameters#

queue

The queue where the routine should be executed.

n

Number of elements in vectors x and y.

alpha

Specifies the scalar alpha.

x

Buffer holding input vector x. Size of the buffer must be at least 1 + (n - 1)*abs(incx)). See Matrix Storage for more details.

incx

Stride between two consecutive elements of vector x.

beta

Specifies the scalar beta.

y

Buffer holding input vector y. Size of the buffer must be at least 1 + (n - 1)*abs(incy)). See Matrix Storage for more details.

incy

Stride between two consecutive elements of vector y.

Output Parameters#

y

Buffer holding updated vector y.

axpby (USM Version)#

Syntax#

namespace oneapi::mkl::blas::column_major {
  sycl::event axpby(sycl::queue &queue,
                    std::int64_t n,
                    oneapi::mkl::value_or_pointer<T> alpha,
                    const T *x,
                    std::int64_t incx,
                    oneapi::mkl::value_or_pointer<T> beta,
                    T *y,
                    std::int64_t incy,
                    const std::vector<event> &dependencies = {});
  }
namespace oneapi::mkl::blas::row_major {
  sycl::event axpby(sycl::queue &queue,
                    std::int64_t n,
                    oneapi::mkl::value_or_pointer<T> alpha,
                    const T *x,
                    std::int64_t incx,
                    oneapi::mkl::value_or_pointer<T> beta,
                    T *y,
                    std::int64_t incy,
                    const std::vector<event> &dependencies = {});
  }

Input Parameters#

queue

The queue where the routine should be executed.

n

Number of elements in vectors x and y.

alpha

Specifies the scalar alpha. See Scalar Arguments for more information on the value_or_pointer data type.

x

Pointer to the input vector x. Size of the array must be at least 1 + (n - 1)*abs(incx)). See Matrix Storage for more details.

incx

Stride between two consecutive elements of vector x.

beta

Specifies the scalar beta. See Scalar Arguments for more information on the value_or_pointer data type.

y

Pointer to the input vector y. Size of the array must be at least 1 + (n - 1)*abs(incy)). See Matrix Storage for more details.

incy

Stride between two consecutive elements of vector y.

dependencies

List of events to wait for before starting computation, if any. If omitted, defaults to no dependencies.

Output Parameters#

y

Array holding updated vector y.

Return Values#

Output event to wait on to ensure computation is complete.