Solves a system of linear equations for a triangular sparse matrix.
Using SYCL buffers:
void mkl::sparse::trsv (cl::sycl::queue & queue, mkl::uplo uplo_flag, mkl::transpose transpose_flag, mkl::diag diag_flag, matrix_handle_t handle, cl::sycl::buffer<fp, 1> & x, cl::sycl::buffer<fp, 1> & y);
Using USM pointers:
cl::sycl::event mkl::sparse::trsv (cl::sycl::queue & queue, mkl::uplo uplo_flag, mkl::transpose transpose_flag, mkl::diag diag_flag, matrix_handle_t handle, fp *x, fp *y, cl::sycl::vector_class<cl::sycl::event> &dependencies = {});
The mkl::sparse::trsv routine solves a system of linear equations for a square matrix:
op(A)*y = x
where A is a triangular sparse matrix of size m rows by m columns, op is a matrix modifier for matrix A, alpha is a scalar, and x and y are vectors of length at least m.
Specifies the SYCL command queue which will be used for SYCL kernels execution.
Specifies if the input matrix is an upper triangular or a lower triangular matrix.
mkl::uplo::lower | The lower triangular matrix part is processed. |
mkl::uplo::upper | The upper triangular matrix part is processed. |
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 if the input matrix has a unit diagonal or not.
mkl::diag::nonunit | Diagonal elements might not be equal to one. |
mkl::diag::unit | Diagonal elements are equal to one. |
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. It is the input vector x
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::trsv routine depends on.
SYCL or USM memory object containing an array of size at least nRows filled with the solution to the system of linear equations.
SYCL event which can be waited upon or added as a dependency for the completion of the trsv routine.
An example of how to use mkl::sparse::trsv with SYCL buffers or USM can be found in the Intel® oneMKL installation directory, under:
examples/sycl/spblas/sparse_trsv.cpp
examples/sycl/spblas/sparse_trsv_usm.cpp