# What is hipSPARSE#

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:

hipsparse_auxiliary_functions_ describe available helper functions that are required for subsequent library calls.

hipsparse_level1_functions_ describe operations between a vector in sparse format and a vector in dense format.

hipsparse_level2_functions_ describe operations between a matrix in sparse format and a vector in dense format.

hipsparse_level3_functions_ describe operations between a matrix in sparse format and multiple vectors in dense format.

hipsparse_extra_functions_ describe operations that manipulate sparse matrices.

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

hipsparse_conversion_functions_ describe operations on a matrix in sparse format to obtain a different matrix format.

hipsparse_reordering_functions_ describe operations on a matrix in sparse format to obtain a reordering.

hipsparse_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.