Skip to main content
`Ctrl`+`K`

# hipSPARSELt storage format

hipSPARSELt uses a structured sparsity storage format, which is represented by an \(m \times n\) matrix, where:

- m = number of rows (integer)

- n = number of columns (integer)

- sparsity = 50%, the ratio of `nnz` elements in every 2:1 (int) or 4:2 (others) element along the row (4:2 means every 4 continuous elements only has 2 `nnz` elements)

- compressed matrix = matrix of `nnz` elements containing data

- metadata = matrix of `nnz` elements containing the element indices in every 4:2 or 2:1 array along the row (the contents or structure of the metadata is dependent on the chosen solution by the backend implementation)

Consider the following \(4 \times 4\) matrix and the structured sparsity structures using \(m = 4, n = 4\):

\[\begin{split}A = \begin{pmatrix} 1.0 & 2.0 & 0.0 & 0.0 \\ 0.0 & 0.0 & 3.0 & 4.0 \\ 0.0 & 6.0 & 7.0 & 0.0 \\ 0.0 & 6.0 & 0.0 & 8.0 \\ \end{pmatrix}\end{split}\]

where

\[\begin{split}Compressed A = \begin{pmatrix} 1.0 & 2.0 \\ 3.0 & 4.0 \\ 6.0 & 7.0 \\ 6.0 & 8.0 \\ \end{pmatrix} metadata = \begin{pmatrix} 0 & 1 \\ 2 & 3 \\ 1 & 2 \\ 1 & 3 \\ \end{pmatrix}\end{split}\]