A cache-oblivious sparse matrix-vector multiplication scheme based on the Hilbert curve

Publication date

2012

Authors

Yzelman, A.N.ISNI 0000000388688489
Bisseling, RobISNI 0000000384208994

Editors

Günther, Michael

Advisors

Supervisors

Document Type

Part of book
Open Access logo

License

Abstract

The sparse matrix–vector (SpMV) multiplication is an important kernel in many applications. When the sparse matrix used is unstructured, however, standard SpMV multiplication implementations typically are inefficient in terms of cache usage, sometimes working at only a fraction of peak performance. Cache-aware algorithms take information on specifics of the cache architecture as a parameter to derive an efficient SpMV multiply. In contrast, cache-oblivious algorithms strive to obtain efficiency regardless of cache specifics. In earlier work in this latter area, Haase et al. (2007) use the Hilbert curve to order nonzeroes in the sparse matrix. They obtain speedup mainly when multiplying against multiple (up to eight) right-hand sides simultaneously. We improve on this by introducing a new datastructure, called Bi-directional Incremental Compressed Row Storage (BICRS). Using this datastructure to store the nonzeroes in Hilbert order, speedups of up to a factor two are attained for the SpMV multiplication y DAx on sufficiently large, unstructured matrices.

Keywords

Sparse matrix, Column Index, Hilbert Curve, Cache Architecture, Link Matrix, Taverne

Citation

Yzelman, A N & Bisseling, R H 2012, A cache-oblivious sparse matrix-vector multiplication scheme based on the Hilbert curve. in M Günther (ed.), Progress in industrial mathematics at ECMI 2010. Mathematics in industry, no. 17, Springer, Heidelberg, pp. 627-633. https://doi.org/10.1007/978-3-642-25100-9_73