Developer Reference

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
Intel GPU
Sparse Vector - Dense Vector addition (AXPY)
y <- alpha * w + y
No
No
Sparse Vector - Sparse Vector Dot product (SPDOT) (sv.sv -> sc)
d <- dot(w,v)
N/A
N/A
dot(w,v) = sum(w
i
* v
i
)
No
No
dot(w,v) = sum(conj(w
i
) * v
i
)
No
No
Sparse Vector - Dense Vector Dot product (SPDOT) (sv.dv -> sc)
d <- dot(w,x)
N/A
N/A
dot(w,v) = sum(w
i
* v
i
)
No
No
dot(w,v) = sum(conj(w
i
) * v
i
)
No
No
Dense Vector - Sparse Vector Conversion (sv <-> dv)
N/A
N/A
x = scatter(w)
No
No
w = gather(x,windx)
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.

Level 2

Functionality
Operations
CPU
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
Yes
op(A) = A
T
Yes
Yes
op(A) = A
H
No
No
Symmetric Matrix-Vector multiplication (SYMV) (sm*dv->dv)
y <- beta*y + alpha * op(A)*x
N/A
N/A
op(A) = A
Yes
Yes
op(A) = A
T
Yes
Yes
op(A) = A
H
No
No
Triangular Matrix-Vector multiplication (TRMV) (sm*dv->dv)
y <- beta*y + alpha * op(A)*x
N/A
N/A
op(A) = A
Yes
No
op(A) = A
T
Yes
No
op(A) = A
H
No
No
General Matrix-Vector mult with dot product (GEMVDOT) (sm*dv -> dv, dv.dv->sc)
y <- beta*y + alpha * op(A)*x, d = dot(x,y)
N/A
N/A
op(A) = A
Yes
Yes
op(A) = A
T
Yes
Yes
op(A) = A
H
No
No
Triangular Solve (TRSV) (inv(sm)*dv -> dv)
solve for y, op(A)*y = alpha*x
N/A
N/A
op(A) = A
Yes
Yes
op(A) = A
T
Yes
Yes
op(A) = A
H
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.

Level 3

Functionality
Operations
CPU
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
Yes
op(A) = A
T
, op(X) = X
Yes
Yes
op(A) = A
H
, op(X) = X
Yes
Yes
op(A) = A, op(X) = X
T
No
No
op(A) = A
T
, op(X) = X
T
No
No
op(A) = A, op(X) = X
H
No
No
op(A) = A
H
No
No
op(A) = A
T
, op(X) = X
H
No
No
op(A) = A
H
, op(X) = X
H
No
No
General Dense Matrix - Sparse Matrix Multiplication (GEMM) (dm*sm->dm)
Y <- alpha*op(X)*op(A) + beta*Y
N/A
N/A
op(X) = X, op(A)=A
No
No
op(X) = X
H
, op(A)=A
No
No
op(X) = X
H
, op(A)=A
No
No
op(X) = X, op(A)=A
H
No
No
op(X) = X
H
, op(A)=A
H
No
No
op(X) = X
H
, op(A)=A
H
No
No
op(X) = X, op(A)=A
H
No
No
op(X) = X
H
, op(A)=A
H
No
No
op(X) = X
H
, op(A)=A
H
No
No
General Sparse Matrix - Sparse Matrix Multiplication (GEMM) (sm*sm->sm)
C <- alpha*op(A)*op(B) + beta*C
N/A
N/A
op(A)=A, op(B)=B
No
No
op(A)=A
T
, op(B)=B
No
No
op(A)=A
H
, op(B)=B
No
No
op(A)=A, op(B)=B
T
No
No
op(A)=A
T
, op(B)=B
T
No
No
op(A)=A
H
, op(B)=B
T
No
No
op(A)=A, op(B)=B
H
No
No
op(A)=A
T
, op(B)=B
H
No
No
op(A)=A
H
, op(B)=B
H
No
No
General Sparse Matrix - Sparse Matrix Multiplication (GEMM) (sm*sm->dm)
Y <- alpha*op(A)*op(B) + beta*Y
N/A
N/A
op(A)=A, op(B)=B
No
No
op(A)=A
T
, op(B)=B
No
No
op(A)=A
H
, op(B)=B
No
No
op(A)=A, op(B)=B
T
No
No
op(A)=A
T
, op(B)=B
T
No
No
op(A)=A
H
, op(B)=B
T
No
No
op(A)=A, op(B)=B
H
No
No
op(A)=A
T
, op(B)=B
H
No
No
op(A)=A
H
, op(B)=B
H
No
No
Symmetric Rank-K update (SYRK) (sm*sm->sm)
C <- op(A)*op(A)
H
N/A
N/A
op(A)=A
No
No
op(A)=A
T
No
No
op(A)=A
H
No
No
Symmetric Rank-K update (SYRK) (sm*sm->dm)
Y <- op(A)*op(A)
H
N/A
N/A
op(A)=A
No
No
op(A)=A
T
No
No
op(A)=A
H
No
No
Symmetric Triple Product (SYPR) (op(sm)*sm*sm -> sm)
C <- op(A)*B*op(A)
H
N/A
N/A
op(A)=A
No
No
op(A)=A
T
No
No
op(A)=A
H
No
No
Triangular Solve (TRSM) (inv(sm)*dm -> dm)
solve for Y, op(A)*Y = alpha*X
N/A
N/A
op(A)=A
No
No
op(A)=A
T
No
No
op(A)=A
H
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
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
No
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
No
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
No
No
Sparse Matrix Add (ADD)
C <- alpha*op(A) + B
No
No
op(A) = A
T
No
No
op(A) = A
H
No
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
Intel GPU
Sort Indices of Matrix (ORDER)
N/A
No
No
Transpose of Sparse Matrix (TRANSPOSE)
A <- op(A) with op=trans or conjtrans
N/A
N/A
transpose CSR/CSC matrix
No
No
transpose BSR matrix
No
No
Sparse Matrix Format Converter (CONVERT)
N/A
No
No
Dense to Sparse Matrix Format Converter (CONVERT)
N/A
No
No
Copy Matrix Handle (COPY)
N/A
No
No
Create CSR Matrix Handle
N/A
Yes
Yes
Create CSC Matrix Handle
N/A
No
No
Create COO Matrix Handle
N/A
No
No
Create BSR Matrix Handle
N/A
No
No
Export CSR Matrix
Allows access to internal data in the CSR Matrix handle
No
No
Export CSC Matrix
Allows access to internal data in the CSC Matrix handle
No
No
Export COO Matrix
Allows access to internal data in the COO Matrix handle
No
No
Export BSR Matrix
Allows access to internal data in the BSR Matrix handle
No
No
Set Value in Matrix
N/A
No
N
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
Intel GPU
add MEMORY hint and optimize
Chooses to allow larger memory requiring optimizations or not.
No
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
add GEMM hint and optimize
N/A
Yes
No
add TRSM hint and optimize
N/A
No
No
add DOTMV hint and optimize
N/A
Yes
No
add SYMGS hint and optimize
N/A
No
No
add SYMGS_MV hint and optimize
N/A
No
No
add LU_SMOOTHER hint and optimize
N/A
No
No

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.