# Introduction#

hipSPARSE is a library that contains basic linear algebra subroutines for sparse matrices and vectors written in HIP for GPU devices. It is designed to be used from C and C++ code. The functionality of hipSPARSE is organized in the following categories:

Sparse Auxiliary Functions describe available helper functions that are required for subsequent library calls.

Sparse Level 1 Functions describe operations between a vector in sparse format and a vector in dense format.

Sparse Level 2 Functions describe operations between a matrix in sparse format and a vector in dense format.

Sparse Level 3 Functions describe operations between a matrix in sparse format and multiple vectors in dense format.

Sparse Extra Functions describe operations that manipulate sparse matrices.

Preconditioner Functions describe manipulations on a matrix in sparse format to obtain a preconditioner.

Sparse Conversion Functions describe operations on a matrix in sparse format to obtain a different matrix format.

Sparse Reordering Functions describe operations on a matrix in sparse format to obtain a reordering.

Sparse Generic Functions describe operations that manipulate sparse matrices.

The code is open and hosted here: ROCmSoftwarePlatform/hipSPARSE

hipSPARSE is a SPARSE marshalling library, with multiple supported backends. It sits between the application and a worker SPARSE library, marshalling inputs into the backend library and marshalling results back to the application. hipSPARSE exports an interface that does not require the client to change, regardless of the chosen backend. Currently, hipSPARSE supports rocSPARSE and cuSPARSE as backends. hipSPARSE focuses on convenience and portability. If performance outweighs these factors, then using rocSPARSE itself is highly recommended. rocSPARSE can also be found on GitHub.