Overview of Intel® oneAPI Math Kernel Library (oneMKL) Sparse BLAS for DPC++

The following pages describe the oneMKL Sparse BLAS computational routines for DPC++ in detail. These routines, along with other helper routines (see Sparse BLAS Routines for the full list), are declared in the header file oneapi/mkl/spblas.hpp.

Several conventions are used throughout this document:

  • All oneMKL DPC++ functions and data types are inside the mkl namespace.

  • For brevity, the sycl namespace is omitted from DPC++ object types such as buffers and queues. For example, a single-precision, 1D buffer A would be written buffer<float,1> &A instead of sycl::buffer<float,1> &A.

  • The routines are overloaded on precision. Each routine has a table detailing the supported precisions.

Device Support

DPC++ supports several types of devices:

  • CPU device: Performs computations on a CPU using OpenCL™.

  • GPU device: Performs computations on a GPU using OpenCL™ or Level Zero.

Each routine details the device types that are currently supported.

In the current release of oneMKL DPC++ Sparse BLAS, all listed routines support use on CPU and GPU devices (unless otherwise noted) with the Compressed Sparse Row (CSR) matrix format.

Routine

Data Types

Description

Level 2:

sparse::gemv

float, double

General sparse matrix-dense vector product

sparse::gemvdot

float, double

General sparse matrix-dense vector product with fused dot product

sparse::symv

float, double

Symmetric sparse matrix-dense vector product

sparse::trmv

float, double

Triangular sparse matrix-dense vector product

sparse::trsv

float, double

Triangular solve of sparse matrix against a dense vector.

Level 3:

sparse::gemm

float, double

General sparse matrix-dense matrix product with dense matrix output

sparse::matmat

float, double

General sparse matrix-sparse matrix product with sparse matrix output. Supports CPU and GPU devices.