oneapi::mkl::sparse::symv

Computes a sparse matrix-dense vector product for a symmetric matrix built from the lower or upper triangular of the input matrix.

Description

Note

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 oneapi::mkl::sparse::symv routine computes a sparse symmetric matrix-dense vector product for a real symmetric matrix built from the lower or upper triangular portion of the input matrix A defined as

y \leftarrow \alpha\cdot \text{sym}(A)\cdot x + \beta \cdot y

where \alpha and \beta are scalars, A is a real-valued square sparse matrix of dimension m rows and columns, \text{sym}() is a matrix modifier which symmetrizes the matrix according to the oneapi::mkl::uplo value and x and y are dense vectors.

For a given matrix decomposition into lower, diagonal and upper parts A = L+D+U, the symv routine with oneapi::mkl::uplo::lower selected will perform the matrix product with \text{sym}(A) = L+D+L^T and for oneapi::mkl::uplo::upper will perform the matrix product using \text{sym}(A) = U^T+D+U.

API

Syntax

Note

Currently, complex types are not supported.

Using SYCL buffers:

namespace oneapi::mkl::sparse {
    void symv (
        cl::sycl::queue &queue,
        oneapi::mkl::uplo uplo_flag,
        const fp alpha,
        oneapi::mkl::sparse::matrix_handle_t handle,
        cl::sycl::buffer<fp, 1> &x,
        const fp beta, cl::sycl::buffer<fp, 1> &y)
}

Using USM pointers:

namespace oneapi::mkl::sparse {
    cl::sycl::event symv (
        cl::sycl::queue &queue,
        oneapi::mkl::uplo uplo_flag,
        const fp alpha,
        oneapi::mkl::sparse::matrix_handle_t handle,
        fp *x,
        const fp beta,
        fp *y,
        const std::vector<cl::sycl::event> &dependencies = {})
}

Include Files

  • oneapi/mkl/spblas.hpp

Input Parameters

queue

Specifies the SYCL command queue which will be used for SYCL kernels execution.

uplo_flag

Specifies which part is to be processed.

oneapi::mkl::uplo::lower

The lower part is used for symmetric product.

oneapi::mkl::uplo::upper

The upper part is used for symmetric product.

alpha

Specifies the scalar, \alpha.

handle

Handle to object containing sparse matrix and other internal data. Created using one of the oneapi::mkl::sparse::set_<sparse_matrix_type>_data routines.

Note

Currently, the only supported case for <sparse_matrix_type> is csr.

x

SYCL buffer or device-accessible USM pointer of size at least equal to the number of columns, m, of input matrix.

beta

Specifies the scalar, \beta.

y

SYCL buffer or device-accessible USM pointer of size at least equal to the number of rows, m, of the input matrix.

dependencies

A vector of type std::vector<cl::sycl::event> containing the list of events that the oneapi::mkl::sparse::symv routine depends on.

Output Parameters

y

Overwritten by the updated vector y.

Return Values (USM Only)

cl::sycl::event

SYCL event which can be waited upon or added as a dependency for the completion of the symv routine.

Examples

An example of how to use oneapi::mkl::sparse::symv with SYCL buffers can be found in the oneMKL installation directory, under:

examples/dpcpp/sparse_blas/source/sparse_symv.cpp