Computes a sparse matrix-vector product with dot product.
Currently, complex types are not supported.
Using SYCL buffers:
void mkl::sparse::gemvdot (cl::sycl::queue & queue, mkl::transpose transpose_flag, fp alpha, matrix_handle_t handle, cl::sycl::buffer<fp, 1> & x, fp beta, cl::sycl::buffer<fp, 1> & y, cl::sycl::buffer<fp, 1> & d);
Using USM pointers:
cl::sycl::event mkl::sparse::gemvdot (cl::sycl::queue & queue, mkl::transpose transpose_flag, fp alpha, matrix_handle_t handle, fp *x, fp beta, fp *y, fp *d, cl::sycl::vector_class<cl::sycl::event> &dependencies={});
The mkl::sparse::gemvdot routine computes a sparse matrix-vector product and dot product defined as
y := alpha*op(A)*x + beta*y
d := x * y
where:
A is a general sparse matrix, alpha, beta, and d are scalars, x and y are vectors.
Specifies the SYCL command queue which will be used for SYCL kernels execution.
Specifies operation op() on input matrix.
mkl::transpose::nontrans | Non-transpose, op(A) = A. |
mkl::transpose::trans | Transpose, op(A) = AT. |
mkl::transpose::conjtrans | Conjugate transpose, op(A) = AH. |
Currently, the only supported case for operation is mkl::transpose::nontrans.
Specifies the scalar alpha.
Handle to object containing sparse matrix and other internal data. Created using one of the mkl::sparse::set_<sparse_matrix_type>_data routines.
Currently, the only supported case for <sparse_matrix_type> is csr.
SYCL or USM memory object containing an array of size at least equal to the number of columns of input matrix if op = mkl::transpose::nontrans and at least the number of rows of input matrix otherwise.
Specifies the scalar beta.
SYCL or USM memory object containing an array of size at least equal to the number of columns of input matrix if op = mkl::transpose::nontrans and at least the number of rows of input matrix otherwise.
A vector of type cl::sycl::vector_class<cl::sycl::event> containing the list of events that the mkl::sparse::gemvdot routine depends on.
Overwritten by the updated vector y.
Overwritten by the dot product of x and y.
SYCL event which can be waited upon or added as a dependency for the completion of the gemvdot routine.
An example of how to use mkl::sparse::gemvdot with SYCL buffers can be found in the Intel® oneMKL installation directory, under:
examples/sycl/spblas/sparse_gemvdot.cpp