axpby#
Computes a vector-scalar product added to a scaled-vector.
Description
The axpby
routines compute two scalar-vector product and add them:
where x
and y
are vectors of n
elements and 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::math::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::math::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 vector
x
andy
.- alpha
Specifies the scalar
alpha
.- x
Buffer holding input vector
x
. The buffer must be of size at least (1 + (n
– 1)*abs(incx
)). See Matrix Storage for more details.- incx
Stride between two consecutive elements of the
x
vector.- beta
Specifies the scalar
beta
.- y
Buffer holding input vector
y
. The buffer must be of size at least (1 + (n
– 1)*abs(incy
)). See Matrix Storage for more details.- incy
Stride between two consecutive elements of the
y
vector.
Output Parameters
- y
Buffer holding the updated vector
y
.
Throws
This routine shall throw the following exceptions if the associated condition is detected. An implementation may throw additional implementation-specific exception(s) in case of error conditions not covered here.
oneapi::math::invalid_argument
oneapi::math::unsupported_device
axpby (USM Version)#
Syntax
namespace oneapi::math::blas::column_major {
sycl::event axpby(sycl::queue &queue,
std::int64_t n,
value_or_pointer<T> alpha,
const T *x, std::int64_t incx,
value_or_pointer<T> beta,
T *y, std::int64_t incy,
const std::vector<sycl::event> &dependencies = {})
}
namespace oneapi::math::blas::row_major {
sycl::event axpby(sycl::queue &queue,
std::int64_t n,
value_or_pointer<T> alpha,
const T *x, std::int64_t incx,
value_or_pointer<T> beta,
T *y, std::int64_t incy,
const std::vector<sycl::event> &dependencies = {})
}
Input Parameters
- queue
The queue where the routine should be executed.
- n
Number of elements in vector
x
andy
.- alpha
Specifies the scalar alpha. See Scalar Arguments in BLAS for more details.
- beta
Specifies the scalar beta. See Scalar Arguments in BLAS for more details.
- x
Pointer to the input vector
x
. The allocated memory must be of size at least (1 + (n
– 1)*abs(incx
)). See Matrix Storage for more details.- incx
Stride between consecutive elements of the
x
vector.- y
Pointer to the input vector
y
. The allocated memory must be of size at least (1 + (n
– 1)*abs(incy
)). See Matrix Storage for more details.- incy
Stride between consecutive elements of the
y
vector.- dependencies
List of events to wait for before starting computation, if any. If omitted, defaults to no dependencies.
Output Parameters
- y
Array holding the updated vector
y
.
Return Values
Output event to wait on to ensure computation is complete.
Throws
This routine shall throw the following exceptions if the associated condition is detected. An implementation may throw additional implementation-specific exception(s) in case of error conditions not covered here.
oneapi::math::invalid_argument
oneapi::math::unsupported_device
oneapi::math::device_bad_alloc
Parent topic: BLAS-like Extensions