Computes a sparse matrix-vector product for a symmetric matrix.
Currently, complex types are not supported.
Using SYCL buffers:
void mkl::sparse::symv (cl::sycl::queue & queue, mkl::uplo uplo_flag, fp alpha, matrix_handle_t handle, cl::sycl::buffer<fp, 1> & x, fp beta, cl::sycl::buffer<fp, 1> & y);
Using USM pointers:
cl::sycl::event mkl::sparse::symv (cl::sycl::queue & queue, mkl::uplo uplo_flag, fp alpha, matrix_handle_t handle, fp *x, fp beta, fp *y, cl::sycl::vector_class<cl::sycl::event> &dependencies = {});
Refer to Supported Types for a list of supported <fp> and <intType>, and refer to Exceptions for a detailed description of the exceptions thrown.
The mkl::sparse::symv routine computes a sparse matrix-vector product over a symmetric part defined as
y := alpha*A*x + beta*y
where:
alpha and beta are scalars, and x and y are vectors.
Specifies the SYCL command queue which will be used for SYCL kernels execution.
Specifies which symmetric part is to be processed.
mkl::uplo::lower | The lower symmetric part is processed. |
mkl::uplo::upper | The upper symmetric part is processed. |
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.
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.
A vector of type cl::sycl::vector_class<cl::sycl::event> containing the list of events that the mkl::sparse::symv routine depends on.
Overwritten by the updated vector y.
SYCL event which can be waited upon or added as a dependency for the completion of the symv routine.
An example of how to use mkl::sparse::symv with SYCL buffers can be found in the Intel® oneMKL installation directory, under:
examples/sycl/spblas/sparse_symv.cpp