# SELL-C-sigma sparse matrix format

Is anyone aware of any Fortran/C/C++ libraries that support the SELL-C-\sigma sparse matrix format?

As far as I can tell, the format was introduced in

A Unified Sparse Matrix Data Format for Efficient General Sparse Matrix-Vector Multiplication on Modern Processors with Wide SIMD Units | SIAM Journal on Scientific Computing

A few more works that discuss this format include

Hi, I did a search but found nothing on this format besides what you mentioned… on the way I found a different one that pursues a similar idea CSX and they do have an implementation on C/C++ GitHub - cslab-ntua/csx: Compressed Sparse eXtended (CSX) sparse matrix format. This proof-of-concept version is now deprecated. It has been replaced from the SparseX sparse kernel optimization library [https://github.com/cslab-ntua/sparsex] in case it can be useful

A few weeks ago I noticed that there is matrix type included in PETSc called MATSELL. I’m not sure it also uses the -C-sigma storage extension.

Excellente!! After reading the accompanying paper https://caidao22.github.io/publication/zhang-2018/ICPP_KNL_final.pdf it does very much look like a further specialization of the SELL-C-sigma format such that it can profit best from AVX2 and AVX-512 registries. They mention the sell-c-sigma as a general framework, without explicitly saying their format is a particular case of it. Looking at the algorithms it does look like a mixture of ideas.

In their benchmarks they show extremely good performance boost on KNL architectures with avx512, as with a larger register the SpMV becomes compute-bound instead of memory-bound as they argue, but barely noticeable performance gains in other architectures (compared to the baseline CSR).

Extremely interesting!