Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 12/16/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Sparse BLAS Functionality

In the following table for functionality, sm = sparse matrix, dm = dense matrix, sv = sparse vector, dv = dense vector, sc = scalar.

In the following table for operations, dense vectors = x, y, sparse vectors = w,v, dense matrices = X,Y, sparse matrices = A, B, C, and scalars = alpha, beta, d.

Level 1
Functionality Operations CPU OpenMP Offload Intel GPU

Sparse Vector - Dense Vector addition (AXPY)

y <- alpha * w + y

Yes

No

Sparse Vector - Sparse Vector Dot product (SPDOT) (sv.sv -> sc)

d <- dot(w,v)

N/A

N/A

dot(w,v) = sum(wi* vi)

No

No

dot(w,v) = sum(conj(wi) * vi)

No

No

Sparse Vector - Dense Vector Dot product (SPDOT) (sv.dv -> sc)

d <- dot(w,x)

N/A

N/A

In the following table for functionality, sm = sparse matrix, dm = dense matrix, sv = sparse vector, dv = dense vector, sc = scalar.

In the following table for operations, dense vectors = x, y, sparse vectors = w,v, dense matrices = X,Y, sparse matrices = A, B, C, and scalars = alpha, beta, d.

Level 2
Functionality Operations CPU OpenMP Offload Intel GPU

General Matrix-Vector multiplication (GEMV) (sm*dv->dv)

y <- beta*y + alpha * op(A)*x

N/A

N/A

op(A) = A

Yes

No

op(A) = AT

Yes

No

op(A) = AH

Yes

No

Symmetric Matrix-Vector multiplication (SYMV) (sm*dv->dv)

y <- beta*y + alpha * op(A)*x

N/A

N/A

In the following table for functionality, sm = sparse matrix, dm = dense matrix, sv = sparse vector, dv = dense vector, sc = scalar.

In the following table for operations, dense vectors = x, y, sparse vectors = w,v, dense matrices = X,Y, sparse matrices = A, B, C, and scalars = alpha, beta, d.

Level 3
Functionality Operations CPU OpenMP Offload Intel GPU

General Sparse Matrix - Dense Matrix Multiplication (GEMM) (sm*dm->dm)

Y <- alpha*op(A)*op(X) + beta*Y

N/A

N/A

op(A) = A, op(X) = X

Yes

No

op(A) = AT, op(X) = X

Yes

No

op(A) = AH, op(X) = X

Yes

No

op(A) = A, op(X) = XT

No

No

In the following table for functionality, sm = sparse matrix, dm = dense matrix, sv = sparse vector, dv = dense vector, sc = scalar.

In the following table for operations, dense vectors = x, y, sparse vectors = w,v, dense matrices = X,Y, sparse matrices = A, B, C, and scalars = alpha, beta, d.

Other
Functionality Operations CPU OpenMP Offload Intel GPU

Symmetric Gauss-Seidel Preconditioner (SYMGS) (update A*x=b, A=L+D+U)

x0 <- x*alpha; (L+D)*x1=b-U*x0; (U+D)*x=b-L*x1

Yes

No

Symmetric Gauss-Seidel Preconditioner with Matrix-Vector product (SYMGS_MV) (update A*x=b, A=L+D+U)

x0 <- x*alpha; (L+D)*x1=b-U*x0; (U+D)*x=b-L*x1; y=A*x

Yes

No

LU Smoother (LU_SMOOTHER) (update A*x=b, A=L+D+U, E~inv(D) )

r=b-A*x; (L+D)*E*(U+D)*dx=r; y=x+dr

Yes

No

Sparse Matrix Add (ADD)

C <- alpha*op(A) + B

Yes

No

op(A) = AT

Yes

No

In the following table for operations, dense vectors = x, y, sparse vectors = w,v, dense matrices = X,Y, sparse matrices = A, B, C, and scalars = alpha, beta, d.

Helper Functions
Functionality Operations CPU OpenMP Offload Intel GPU

Sort Indices of Matrix (ORDER)

N/A

Yes

No

Transpose of Sparse Matrix (TRANSPOSE)

A <- op(A) with op=trans or conjtrans

N/A

N/A

transpose CSR/CSC matrix

Yes

No

transpose BSR matrix

Yes

No

Sparse Matrix Format Converter (CONVERT)

N/A

Yes

No

In the following table for functionality, sm = sparse matrix, dm = dense matrix, sv = sparse vector, dv = dense vector, sc = scalar.

In the following table for operations, dense vectors = x, y, sparse vectors = w,v, dense matrices = X,Y, sparse matrices = A, B, C, and scalars = alpha, beta, d.

Optimize Stages
Functionality Operations CPU OpenMP Offload Intel GPU

add MEMORY hint and optimize

Chooses to allow larger memory requiring optimizations or not.

Yes

No

Add GEMV hint and optimize

N/A

Yes

No

Add SYMV hint and optimize

N/A

Yes

No

Add TRMV hint and optimize

N/A

Yes

No

add TRSV hint and optimize

N/A

Yes

No