gemv#
Computes a matrix-vector product using a general matrix.
Description
The gemv
routines compute a scalar-matrix-vector product and add the
result to a scalar-vector product, with a general matrix. The
operation is defined as:
where:
op(A
) is one of op(A
) = A
, or op(A
) =
A
T, or op(A
) = A
H,
alpha
and beta
are scalars,
A
is an m
-by-n
matrix, and x
, y
are vectors.
gemv
supports the following precisions.
T
float
double
std::complex<float>
std::complex<double>
gemv (Buffer Version)#
Syntax
namespace oneapi::math::blas::column_major {
void gemv(sycl::queue &queue,
oneapi::math::transpose trans,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T,1> &a,
std::int64_t lda,
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 gemv(sycl::queue &queue,
oneapi::math::transpose trans,
std::int64_t m,
std::int64_t n,
T alpha,
sycl::buffer<T,1> &a,
std::int64_t lda,
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.
- trans
Specifies
op(A)
, the transposition operation applied toA
.- m
Specifies the number of rows of the matrix
A
. The value ofm
must be at least zero.- n
Specifies the number of columns of the matrix
A
. The value ofn
must be at least zero.- alpha
Scaling factor for the matrix-vector product.
- a
The buffer holding the input matrix
A
. Must have a size of at leastlda
*n
if column major layout is used or at leastlda
*m
if row major layout is used. See Matrix Storage for more details.- lda
Leading dimension of matrix
A
. Must be positive and at leastm
if column major layout is used or at leastn
if row major layout is used.- x
Buffer holding input vector
x
. The lengthlen
of vectorx
isn
ifA
is not transposed, andm
ifA
is transposed. The buffer must be of size at least (1 + (len
- 1)*abs(incx
)). See Matrix Storage for more details.- incx
The stride of vector
x
. Must not be zero.- beta
The scaling factor for vector
y
.- y
Buffer holding input/output vector
y
. The lengthlen
of vectory
ism
, ifA
is not transposed, andn
ifA
is transposed. The buffer must be of size at least (1 + (len
- 1)*abs(incy
)) wherelen
is this length. See Matrix Storage for more details.- incy
The stride of vector
y
. Must not be zero.
Output Parameters
- y
The buffer holding 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
gemv (USM Version)#
Syntax
namespace oneapi::math::blas::column_major {
sycl::event gemv(sycl::queue &queue,
oneapi::math::transpose trans,
std::int64_t m,
std::int64_t n,
value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
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 gemv(sycl::queue &queue,
oneapi::math::transpose trans,
std::int64_t m,
std::int64_t n,
value_or_pointer<T> alpha,
const T *a,
std::int64_t lda,
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.
- trans
Specifies
op(A)
, the transposition operation applied toA
. See oneMath defined datatypes for more details.- m
Specifies the number of rows of the matrix
A
. The value ofm
must be at least zero.- n
Specifies the number of columns of the matrix
A
. The value ofn
must be at least zero.- alpha
Scaling factor for the matrix-vector product. See Scalar Arguments in BLAS for more details.
- a
Pointer to the input matrix
A
. Must have a size of at leastlda
*n
if column major layout is used or at leastlda
*m
if row major layout is used. See Matrix Storage for more details.- lda
Leading dimension of matrix
A
. Must be positive and at leastm
if column major layout is used or at leastn
if row major layout is used.- x
Pointer to the input vector
x
. The lengthlen
of vectorx
isn
ifA
is not transposed, andm
ifA
is transposed. The array holding vectorx
must be of size at least (1 + (len
- 1)*abs(incx
)). See Matrix Storage for more details.- incx
The stride of vector
x
. Must not be zero.- beta
The scaling factor for vector
y
. See Scalar Arguments in BLAS for more details.- y
Pointer to input/output vector
y
. The lengthlen
of vectory
ism
, ifA
is not transposed, andn
ifA
is transposed. The array holding input/output vectory
must be of size at least (1 + (len
- 1)*abs(incy
)) wherelen
is this length. See Matrix Storage for more details.- incy
The stride of vector
y
. Must not be zero.- dependencies
List of events to wait for before starting computation, if any. If omitted, defaults to no dependencies.
Output Parameters
- y
The pointer to 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 Level 2 Routines